gpt4 book ai didi

java - Java 输入缓冲区中的空字符持久性?

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:07 36 4
gpt4 key购买 nike

我正在运行一个循环来接受输入。奇怪的是,当我的缓冲区应该为空时,我的程序似乎认为我有一个空字符。我写了一个小类来演示。

空字符测试:

package Scratch;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class NullCharTest {

public void testNullChar() throws IOException{

for ( int i = 0; i < 2; i++){

String s = readString();
while (s != null) {
s = readString();
}
System.out.println(s);
}
}

private String readString() throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
return in.readLine();
}

}

主要:

package Scratch;

import java.io.IOException;

public class Main {

public static void main(String[] args) throws IOException{
NullCharTest nct = new NullCharTest();
nct.testNullChar();
}

}

输出类似于:

qwe无效的无效的[[编辑:输出只是 null,null,正如 Andreas 所指出的。]]

我输入“e”后输入Ctrl+D。

为什么 for 循环第二次运行时不接收输入? s 第二次不为 null - 这是一个新的 String 引用,刚刚被要求引用 readString() 输出...所以大概我的程序应该在第二次运行 for 循环时等待用户输入...

谢谢!

最佳答案

这段代码毫无意义:

String s = readString();
while (s != null) {
s = readString();
}

while 循环结束时,s 将为 null,因为这是循环正常完成的唯一方法。

然后打印 s 的值,即打印值 null

它被迭代 2 次的 for 循环包围,这意味着它总是最终会打印 null 两次。

q w e 不是输出,而是您键入的输入。输出为 nullnull。始终如此,无论您在按 Ctrl+D 之前输入什么内容。

关于java - Java 输入缓冲区中的空字符持久性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111543/

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