実行結果が
10,20,30,40,50
ng
10,20,30,40,50
となるようにしたいのですが、
10,20,30,40,50
Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds
for length 5
at queue.IntQueue00.enqueue(IntQueue00.java:19)
at queue.IntQueue00.enqueue(IntQueue00.java:5)
at queue.tester.TesterQ00.main(TesterQ00.java:14)
と返ってきてしまいます。
どこをどのようにすれば修正できるのでしょうか。
お示しいただけると助かります。
java
1import java.util.StringJoiner; 2 3public class IntQueue00 implements Queue<Integer> { 4 private Integer[] data; 5 private int in, out, size; 6 7 public IntQueue00() { this(8); } 8 9 public IntQueue00(int max) { 10 data = new Integer[max]; 11 in = 0; 12 out = 0; 13 size = 0; 14 } 15 16 public boolean enqueue(Integer v) { 17 data[in] = v; 18 in += 1; 19 size ++; 20 return true; 21 } 22 23 public Integer dequeue() { 24 Integer ans = null; 25 ans = data[out]; 26 out += 1; 27 size --; 28 return ans; 29 } 30 31 public boolean isEmpty() { return (0 == size);} 32 33 public void clear() { 34 size = 0; 35 in = 0; 36 out = 0; 37 } 38 39 public int size() { return size; } 40 41 public String toString() { 42 StringJoiner j = new StringJoiner(","); 43 for (int p = 0 ,s = 0; s < data.length; s++) { 44 j.add(data[p].toString()); 45 p += 1; 46 47 } 48 return "[" + j.toString() + "](" + size + ")"; 49 } 50}
java
1public interface Queue <V> { 2 public boolean enqueue(V v); 3 public V dequeue(); 4 public boolean isEmpty(); 5 public void clear(); 6 public int size(); 7}
java
1public class TesterQ00 { 2 public static void main(String[] args) { 3 Queue q1 = new IntQueue00(5); 4 q1.enqueue(10); 5 q1.enqueue(20); 6 q1.enqueue(30); 7 q1.enqueue(40); 8 q1.enqueue(50); 9 System.out.println(q1); 10 boolean f = q1.enqueue(60); 11 System.out.println((f ? "ok" : "ng")); 12 System.out.println(q1); 13 } 14}
回答2件
あなたの回答
tips
プレビュー