A キー入力
[A]
[A]
[A]
B キー入力
[A,B]
[A,B]
[A,B]
C キー入力
[A,B,C]
[A,B,C]
[A,B,C]
d キー入力
A [B,C]
上記の実行結果を得たいのですが下記の出力を得てしまいます。ジェネリクスのdequeue()メソッドに問題があるのでしょうか
A
[A]
[A]
[A]
B
[A,B]
[A,B]
[A,B]
C
[A,B,C]
[A,B,C]
[A,B,C]
d
A [A,B]
Java
1 2package exer3.queue; 3 4public interface Queue <T> { 5 public abstract boolean enqueue(T d); 6 public abstract T dequeue(); 7 public abstract boolean isEmpty(); 8 public abstract void clear(); 9} 10 11 12 13 14package exer3.queue; 15import java.util.StringJoiner; 16 17public class FixedArrayQueue<T> implements Queue<T> { 18 private T[] data; 19 private int in; 20 private int out; 21 private int size; 22 private int limit; 23 24 public FixedArrayQueue(){ 25 this(5); 26 } 27 28 public FixedArrayQueue(int size){ 29 clear(); 30 limit = size; 31 data = (T[]) new Object[limit]; 32 } 33 34 public boolean enqueue(T d){ 35 if (limit <= size) 36 return false; 37 data[in++] = d; 38 in %= limit; 39 size++; 40 return true; 41 } 42 43 public T dequeue(){ 44 if (size <= 0) 45 return null; 46 out %= limit; 47 size--; 48 return data[out++]; 49 } 50 51 public boolean isEmpty(){ 52 return (size == 0); 53 } 54 55 public void clear() { 56 in = 0; 57 out = 0; 58 limit = 0; 59 size = 0; 60 } 61 62 public String toString(){ 63 if (isEmpty()) 64 return "[]"; 65 StringJoiner j = new StringJoiner(","); 66 for(int i = 0; i < size; i++) 67 j.add(data[i].toString()); 68 return " [" + j.toString() + "]"; 69 } 70} 71 72 73
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/09 09:09