gpt4 book ai didi

java - 尝试使用java中的扫描仪读取回车键的敲击作为输入?

转载 作者:行者123 更新时间:2023-12-01 18:10:40 26 4
gpt4 key购买 nike

我正在编写一个程序,它将读取用户输入并使用 if/else 条件确定要做什么。如果用户只按回车键并且没有输入任何其他内容,我想通过 if 循环一些内容。如果输入任何其他内容,程序应该退出回到不同的菜单。这是我到目前为止所拥有的:

Scanner scnr = new Scanner(System.in);
String choice = scnr.next();
if (choice.equals("")) {
...
}
else {
...
}

当我运行它时,只需按 Enter 键不会影响任何内容,它只会使光标前进到控制台中的下一行。但是,当我输入某些内容时,在输入其他内容时将其发送到菜单的错误部分工作得很好。我想我必须使用 scnr.next(); 之外的东西,但我不知道那会是什么。

这是入门级类(class),它要求我们使用扫描仪实用程序,而不是更高级的东西。提前致谢。

do
{
//string variable used to take scanner input when
//looping generations
String choice = "";
printWorld( patternName, world, generationCounter);
System.out.println("Options");
System.out.println("(Enter): show next generation");
System.out.println("end(Enter): end this simulation");
System.out.print("Choice:");
choice = scnr.nextLine();
if (choice.length() == 0) {
//used as a filler array when the method
//next generation is called
boolean newWorld[][] = new boolean [world.length][world[0].length];
nextGeneration(world, newWorld);
for (int i=0; i<newWorld.length;i++){
for (int j = 0; j<newWorld[0].length; j++){
world [i][j] = newWorld[i][j];
}
}
generationCounter++;
System.out.println("went through");

} else {
generationKill = 1;
generationCounter = 1;
}
} while (generationKill !=1);

最佳答案

尝试使用 scnr.nextLine(); 而不是 scnr.next();

这是因为 token 的原因。 next() 的文档说:

public String next()

Finds and returns the next complete token from this scanner.

token 通常由空格(“\n”、“\t”、“”)分隔,因此不会将您的“enter”或“\n”字符识别为 token 。这就是为什么它会继续阅读,认为您没有输入任何 token 。

另一方面,

nextLine() 将读取直到找到“\n”字符。这意味着当您输入时,它会读取“\n”字符,从而将您的选择设置为""

关于java - 尝试使用java中的扫描仪读取回车键的敲击作为输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33265484/

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