サイズ5のArrayStackの時に、pop()メソッドを実行すると戻り値は空の時は-1、それ以外は直前に入れた要素を返したい(5を返したい)のですが、結果はどちらも戻り値は「4」で返ってきてしまいます。
これを正しく返したいときはpop()メソッドのretrun文をどのようにすればいいのでしょうか?
java
1import java.util.List; 2import java.util.ArrayList; 3 4public class ArrayStack implements Stack{ 5 private List<Integer> dataStack = new ArrayList<Integer>(); 6 private int maxSize;//スタックに格納できる最大要素数 7 8/*属性maxSizeを引数で指定したsizeで初期化する。*/ 9 public ArrayStack(int size){ 10 this.maxSize = size; 11 } 12 13/*引数で指定したdata(1以上の整数)をスタックの末尾に追加する。 14属性maxSizeの要素数に達していない場合は追加できる。 15追加できる場合はtrue、追加できない場合はfalseを返す*/ 16 public boolean push(int data){ 17 boolean stack = false; 18 if(dataStack.size() < this.maxSize && data > 0) 19 for(int i=0; i<this.maxSize; i++){ 20 dataStack.add(i); 21 stack = true; 22 } else{ 23 stack = false; 24 } 25 return stack; 26 } 27 28/*スタックの末尾から要素を取り出して返す。空の場合、-1を返す。*/ 29 public int pop(){ 30 if(dataStack.isEmpty()){ 31 return -1; 32 } 33 return dataStack.get(dataStack.size()-1); 34 } 35 36/*スタックの要素数を返す*/ 37 public int getSize(){ 38 return dataStack.size(); 39 } 40}