gpt4 book ai didi

java - 重复输出

转载 作者:行者123 更新时间:2023-12-02 06:10:18 25 4
gpt4 key购买 nike

为什么在下面的代码示例中,小于 9 的数字 在我的控制台中打印两次?

public static void main(String[] args) throws java.io.IOException {
System.out.println("Input from keyboard should be '49'");
char e;
for (int a = 0; ; a++) {
e = (char) System.in.read();
if (e == 49)
break;
else
System.out.println("Use number lower than 9");
}
}

这是当您键入除数字 1 之外的任何内容时的输出:

run:
Input from keyboard should be '49'
2
Number lower than 9
Number lower than 9

编辑

基本上,我试图从控制台获取输入并将其存储在 char e 中。输入 1 后得到的值是 49。这就是为什么我在上面的代码中使用了e == 49。我不知道如何仅检索字符 1。接下来,我使用无限循环来强制输入询问特定字符,直到找到正确的字符为止。

最佳答案

当您在命令行中输入 2 时,您实际上输入的是 2\n (其中 \n 是换行符),如下您可以通过按 EnterReturn 确认输入。

System.in.read() 因此在第一个循环中返回 2 并在第二个循环中返回换行符,每次在标准输出。

您可以通过跳过换行符来解决此问题:

for (int a = 0; ; a++) {
e = (char) System.in.read();
if (e == '\n')
continue;
if (e == 49)
break;
else
System.out.println("Use number lower than 9");
}

但还有一些问题:您想要实现什么目标?如果您在基于字符的级别上比较输入,49 不等于数字 49,而是等于代码 49 的字符,即字符 '1' .

其次,如果你正在构建一个无限循环,你也应该这样写。 for 循环给人的印象是,循环将根据您的 int a 进行保留,但事实并非如此。要编写无限循环,您可以编写:

while (true) {
// do something
if (checksomething())
break;
}

关于java - 重复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21955127/

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