我不明白我的代码中的布尔函数。这是我的代码:
import java.io.*;
class Example {
public static void main(String [] args){
String s="";
boolean read=false;
int x;
System.out.println("Enter your name:");
try{
while(!read){
x=System.in.read();
if(x < -1 || x == '\n')
read=true;
s=s + (char)x;
}
}catch(IOException io){
System.err.println(io.getMessage());
}
System.out.println(s);
}
}
为什么如果我将变量布尔读取值更改为true.While语句似乎无限循环。有人可以解释为什么?
答案 0 :(得分:1)
这里读取的是布尔变量而不是函数。就像你有int,String,boolean是一个只有两个值为true或false的数据类型。最初,您将read指定为false。所以while循环至少执行一次。
while(!read)
以上陈述已缩短,可按以下方式重写
while(read ==false)
两者都是一样的。 程序会继续读取字符,除非您输入一个数字&lt; -1或按Enter键(由\ n表示的新行),然后将read指定为true,并且while循环停止执行,因为上述条件不为真。
答案 1 :(得分:0)
System.in.read
函数在文件结尾(或输入结束)返回-1
。这意味着您的比较x < -1
永远不会为真。
您应该使用-1
检查相等:x == -1
。