[]に文字を入れるためにaddを使っていれようとしているのですが、実行しても[]になにも値が入りません。[]にwordを入れるにはどこを修正すべきでしょうか。
boolean add がtrueになったら[]に値がはいるという意味ではないのでしょうか
現状の実行結果
add 'Java'
=> []
add 'Python'
=> []
add ''
=> []
add ''
=> []
add 'JavaScript'
=> []
add 'Go'
=> []
add 'Swift'
=> []
add 'Go'
=> []
add 'Rust'
=> []
実行したいもの
add 'Java'
=> [Java]
add 'Python'
=> [Java, Python]
add ''
add ''
add 'JavaScript'
=> [Java, Python, JavaScript]
add 'Go'
=> [Python, JavaScript, Go]
add 'Swift'
=> [JavaScript, Go, Swift]
add 'Go'
=> [JavaScript, Swift, Go]
add 'Rust'
=> [Swift, Go, Rust]
java
1コード 2package ex5; 3 4import java.util.ArrayDeque; 5import java.util.Queue; 6 7public class SearchHistory extends ArrayDeque<String> { 8 private int maxSize; 9 10 public SearchHistory(int maxSize) { 11 // TODO: 初期化 12 this.maxSize=maxSize; 13 } 14 15 /** 16 * word を追加する。空文字の場合は追加しない。 17 * すでに入っていた文字は入れ直す。 18 * maxSize を超えた分古いデータは削除 19 * 20 * @param word 21 * @return 追加したか否か 22 */ 23 @Override 24 public boolean add(String word) { 25 // TODO: 空文字は保存せず false を返す 26 if (equals("")) { 27 return false; 28 } else { 29 // TODO: すでに入っている文字は入れ直す 30 if (contains(word)) { 31 //削除メソッド 32 remove(word); 33 //最後に追加 34 addLast(word); 35 //addにtrueを返す 36 return true; 37 } 38 // TODO: maxSize を超えた分古いデータは削除 39 if (size()>=maxSize) { 40 remove((queue[0])); 41 addLast(word); 42 } 43 return true; 44 } 45 } 46 47 public static void main(String[] args) { 48 Queue<String> queue = new SearchHistory(3); 49 String[] orders = new String[]{"Java", "Python", "", "", "JavaScript", "Go", "Swift", "Go", "Rust"}; 50 for (String s : orders) { 51 boolean added = queue.add(s); 52 System.out.println("add '" + s + "'"); 53 if (added) { 54 System.out.println(" => " + queue); 55 } 56 } 57 } 58}
回答2件
あなたの回答
tips
プレビュー