我正在尝试输入一个字符串数组(每个字符串都是一个问题) 我的代码如下:
void read_quest()throws IOException
{
System.out.println("enter the questions(enter null to end input operation)");
for(int i = 0;; i++)
{
question[i]=in.readLine();
if(question[i].equals("\0")==true)
{
n=i-1;
break;
}
}
}
但循环永远不会退出 我正在使用bluej,因为它是一个学校项目(我们只允许使用bluej) 提前谢谢
答案 0 :(得分:4)
在Java中,您不必处理"\0"
。而且,无论如何它might be hard for the user to input NUL
character。
方法in.readLine()
返回用户输入的String
,不包括终止它的行尾字符。
如果要检查用户是否在不输入任何文本的情况下按Enter键,请将输入与空字符串""
进行比较,如下所示:
if ("".equals(question[i]))
如果您要查看Ctrl+D
(End of transmission character),请与\4
as said in this post进行比较:
if ("\4".equals(question[i]))
。
注意: 无法在Eclipse中对此进行测试,用户必须在按Ctrl + D
请注意,如果用户使用Ctrl-C
,您的readLine()
将返回null
,您的计划将在不久之后退出。
旁注:
您不需要==true
,因为x.equals(y)
已经是boolean
。
"literal".equals(variable)
比variable.equals("literal")
更安全:如果您的variable
为null
,则第一个版本只会产生false
而不会崩溃,而第二个版本只会产生NullPointerException
而不会崩溃版本抛出{{1}}。
答案 1 :(得分:3)
将其与" \ 0" 以外的任何内容进行比较,你很高兴,你必须这样做,因为无法输入null
答案 2 :(得分:1)
in.readLine()
,则返回null
void read_quest()throws IOException
{
System.out.println("enter the questions(enter null to end input operation)");
for(int i = 0;; i++)
{
question[i]=in.readLine();
if(question[i]==null)
{
n=i-1;
break;
}
}
}
答案 3 :(得分:1)
如果输入结束,您可以要求用户只按enter
而不输入字符串。所以你可以检查空字符串或字符串长度(0)
if (question[i].length() == 0) {
break;
}
答案 4 :(得分:0)
他们不能输入null - 也许你的意思是空字符串?尝试
if(question[i].equals(""))
答案 5 :(得分:0)
in.readLine()
是inputstream的方法,它返回文本行,否则返回null,因此你必须检查null条件。
if(question[i] == null)
应该解决你的问题。
答案 6 :(得分:0)
您在Java中以错误的方式比较null,您需要更改if条件,如下所示:
if(question[i]==null)