私はスタックを作成しようとしています。私はEclipseでデバッグツールを使用し、hasNextInt()
が入力の最後に遭遇したときにコードが終了することを発見しました。次のコードは14番目のwhileループで終了し、コードの第18番目の文はif(sc.hasNextInt()) {
となります。私はJVMメモリについても考えましたが、このコードは再帰的なものではなく、配列のサイズはわずか20です...hasNextInt()が入力の終了を検出すると、Javaは突然終了する
ここに入力して、コンソールにコピーして貼り付けました(最後の "top"は動作しません..)>>ここ
14 push 1 push 2 top size empty pop pop pop size empty pop push 3 empty top
であるコード>>
import java.util.Scanner;
public class User_Stack {
final static int SIZE = 20;
static int[] array = new int[SIZE];
static int where = -1;
public static void main(String[] args) {
String test; int input=0, result=0, tc=1;
Scanner sc = new Scanner(System.in);
/*input the number of test cases*/
int test_case = sc.nextInt();
while(tc <= test_case){
/*input what will do with Stack by String*/
test = sc.next();
/*what is pushed is input by Integer*/
if(sc.hasNextInt()) {
input=sc.nextInt();
}
/*call function by test String*/
switch(test){
case "push":
push(array, input);
break;
case "pop":
System.out.println(pop(array));
break;
case "size":
System.out.println(size(array));
break;
case "empty":
System.out.println(empty(array));
break;
case "top":
System.out.println(top(array));
break;
}
}
}
public static void push(int[] array, int x){
if(where+1==SIZE) return;
array[++where]=x;
}
public static int pop(int[] array){
if(where==-1) return array[where--];
else return -1;
}
public static int size(int[] array){
return where+1;
}
public static int empty(int[] array){
if(where==-1) return 1;
else return 0;
}
public static int top(int[] array){
if(where==-1) return array[where];
else return -1;
}
}
追加すると(sc.hasNext)役立たない場合があります。ありがとうございます!私はスキャナが次のinptを待っていたとは思いません。私はそれを試してみます! – pty115
はい私は、あなたのケースで 'if(sc.hasNextInt())'が役に立ちません –