我不是Java專家,我遇到了問題。我使用Scanner從鍵盤獲取數據,但在將數據註冊到我的陣列之前,我必須進行2次驗證。一種是,數據不一定是字符串,我使用!in.hastNextInt()
來驗證掃描器實例,另一個是數據不必是0
。我正在使用的代碼是下一個:Java:nextInt()驗證不起作用屬性
Scanner in = new Scanner(System.in);
int chain [] = new int [10];
System.out.println("Welcome, please enter the values for the array: ");
for(int x = 0;x < chain.length; x++) {
System.out.print((x+1) +": ");
while(!in.hasNextInt() || in.nextInt()==0) {
System.out.print("This app doesn't accept letters, symbols or zeros: ");
in.next();
}
chain[x] = in.nextInt();
}
,不幸的是,當我運行該程序,它要求我每兩次每個語句,例如,問我每週兩次的陣列和0位置每兩次陣列的位置1。
有沒有人知道發生了什麼? 它完美使用in.nextInt()==0
!in.hasNextInt()
但是當IM給了我這個問題,或當我只用in.nextInt()==0
單獨
什麼是我的錯誤,你建議我在我的代碼改變什麼做,使之正常工作。 我感謝所有幫助
預先感謝您
爲@Andreas他回答說,我不得不改變我的代碼和新的好消息是:
for(int x = 0;x < chain; x++) {
System.out.print((x+1) +": ");
while(!in.hasNextInt()) {
System.out.print("This app doesn't accept letters or symbols: ");
in.next();
}
chain[x] = in.nextInt();
if(chain[x] == 0) {
System.out.println("This app doesn't accept 0");
--x;
}
}
非常感謝,現在我有了一個想法,但在這個時候我在公共交通工具。我會在幾個小時內嘗試你所說的,並告訴你是否有作品。 :) –
感謝您的幫助,我改變了我的代碼,它的工作原理。非常感謝。你可以看到新的答案 –