结束字符串数组的输入

时间:2014-04-29 10:19:29

标签: java arrays

我正在尝试输入一个字符串数组(每个字符串都是一个问题) 我的代码如下:

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) 提前谢谢

7 个答案:

答案 0 :(得分:4)

在Java中,您不必处理"\0"。而且,无论如何它might be hard for the user to input NUL character

方法in.readLine()返回用户输入的String,不包括终止它的行尾字符。

  • 如果要检查用户是否在不输入任何文本的情况下按Enter键,请将输入与空字符串""进行比较,如下所示:
    if ("".equals(question[i]))

  • 如果您要查看Ctrl+DEnd of transmission character),请与\4 as said in this post进行比较:
    if ("\4".equals(question[i]))
    注意: 无法在Eclipse中对此进行测试,用户必须在按Ctrl + D

  • 之后再按Enter键

请注意,如果用户使用Ctrl-C,您的readLine()将返回null,您的计划将在不久之后退出。


旁注:

  • 您不需要==true,因为x.equals(y)已经是boolean

  • "literal".equals(variable)variable.equals("literal")更安全:如果您的variablenull,则第一个版本只会产生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)