gpt4 book ai didi

java - 扫描仪在程序结束时拾取用户输入的问题

转载 作者:行者123 更新时间:2023-12-01 12:52:33 25 4
gpt4 key购买 nike

学习 .Net 后,我​​决定涉足 Java。在重新创建我的 Hello World 之后,我决定制作一个可能有一些有限用途的程序。它似乎运行得足够好,直到我给它重新启动的选项,其中 input.nextline() 似乎被完全忽略,并且它只是无限循环。下面我提交了我的小程序,旨在帮助我女儿学习数学。

package sndgrdmth;

import java.util.Scanner;
import java.util.Random;

public class sndgrd {
public static void main(String[] args) {
Boolean bool = true;
Scanner input = new Scanner(System.in);
Random rand = new Random();
while (bool == true) {

System.out.println("Enter the highest number to add with:");
String str = input.nextLine();

while (isNum(str) == false) {
System.out
.println("Not a valid number.\rEnter your high number:");
str = input.nextLine();
}

int i = Integer.parseInt(str);
int counter = 0;
int topCounter = 5;

while (counter < topCounter) {
int a = rand.nextInt(i);
int b = rand.nextInt(i);
System.out.println(a + " + " + b + " = ?");
int j = input.nextInt();

if (j == a + b) {
++counter;
System.out.println("Correct Answer " + counter + " of "
+ topCounter + "!!!");
} else {
--counter;
System.out.println("Incorrect Answer " + a + " + " + b
+ " = " + (a + b) + "\rLose one point.");
}
}
System.out.println("Congrats! You Win! Do you want to play again? (Y/N)");
//The next line seems to get skipped.
String repeat = input.nextLine();

if ((repeat == "N") || (repeat == "n")) {
bool = false;
}else{
bool = true;
}
}
input.close();
}

public static boolean isNum(String strNum) {
boolean ret = true;
try {

Double.parseDouble(strNum);

} catch (NumberFormatException e) {
ret = false;
}
return ret;
}
}

最佳答案

不要使用 nextLine(),而是使用 next(),这是因为在使用 input.nextInt 获得测试的最后一个 int 之后(); 它只会消耗 int 而不是 '\n' 所以当你调用 input.nextLine(); 它将消耗 '\n',然后继续执行下一个代码块。

解决方案:

将所有 nextLine() 更改为 next()

关于java - 扫描仪在程序结束时拾取用户输入的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com