我正在開發一個程序來玩Go Fish遊戲。在循環一遍之後,除scan.next()
之外的所有內容都可以工作。scan.next()不在循環內工作
那麼,有時它有效,有時它不。這裏是代碼:
System.out.println(compHand.showHand());
while (!(deck.isEmpty())) {
y = 0;
while (x == 1) {
System.out.println("\nYour hand:" + userHand.showHand()+ "\nYour turn. What number do you want to match?");
guess = scan.next();
if (compHand.checkHand(guess)) {
System.out.println("Darn...here you go.");
userHand.removeNum(guess);
compHand.removeNum(guess);
userHand.showHand();
uP++;
}
else {
System.out.println("Nope! Type '1' to go fish!");
y = scan.nextInt();
if (y == 1) {
userHand.goFish();
System.out.println(userHand.showHand());
}
y = 0;
}
guess = "";
x--;
}
while (x == 0) {
System.out.println("Do you have any " + compHand.ask() + "s?");
ans = scan.next();
if (!(ans.contains("go"))) {
System.out.println("Yay!");
userHand.removeNum(ans);
compHand.removeNum(ans);
cP++;
x++;
}
else {
System.out.println("Aww...darn.");
compHand.goFish();
x++;
}
}
System.out.println("Computer's points so far: " + cP + "\nYour points so far: " + uP + "\n");
}
}
因此,它第一次循環執行用戶的手,它的工作原理。然後它適用於電腦,但如果電腦必須去釣魚。當它循環回用戶的手時,它跳過guess = scan.next();
。 我不知道該怎麼辦...
'scan.next()'在什麼情況下會失敗?成功的時候有什麼不同? – user1666620
僅供參考 - 我重新格式化了代碼,因爲您應該選擇一種縮進/支架樣式並堅持使用它,而不是使用兩種不同的樣式。 – JNYRanger
您是否使用過調試器來遍歷代碼並準確查看哪些行正在執行?它真的幫助解決這些類型的問題。另外,當這種跳過發生時,是否打印出「你的手......」文本?如果不是,那麼很可能是因爲在評估循環條件時'x!= 1'。 – JNYRanger