java - 制作命令行,如果语句不起作用

标签 java shell loops

我想制作一个命令行,只是为了运行基本命令。到目前为止,我已经做到了让人们可以告诉程序他们的名字。但是,当我不输入名称时,它会像我输入一样对待它。这是我的类(class):

public static void main(String args[])
        throws IOException
{
    int a = 1;

    do
    {
        System.out.print("$$: ");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String wtt = null; // wtt = what they typed!
        wtt = br.readLine();

        if(wtt == null)
        {
            System.out.println("Why wont you tell me your name!");
        }
        else
        {

            System.out.println("Thanks for the name, " + wtt);
        }

    }
    while(a == 1);
}

这是输出

$$: well

Thanks for the name, well

$$: hole

Thanks for the name, hole

$$:

Thanks for the name,

为什么不起作用?

最佳答案

调用 readLine() on a BufferedReader只会在输入结束时返回 null。在这里,输入还没有结束,你只是输入了一个空行,所以 ""(空字符串)就是结果。

您需要结束输入流,通常使用 Ctrl-C。然后你会得到 “你为什么不告诉我你的名字!”。但随后您需要跳出无限循环。

关于java - 制作命令行,如果语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18323744/

相关文章:

bash - 带有 awk 的这个 shell 脚本行的含义

javascript - 如何重复这段代码

r - 基于 "sessionID"和 "userID"的差异创建 "timeStamp"

java - 安卓:OpenGL ES2 纹理不工作

java - 从 Java 中的多个方法获取用户输入的最佳实践?

shell - 如何为 go bin 提供命令

ruby - 将 Shell 脚本转换为 ruby​​ 中的数组

java - 将 android.support.v7.widget.CardView 导入 Eclipse 时遇到问题

java - 如何在java中使用stanford nlp将解析树的结果打印到文本文件

java - 在 if 语句中组合多个条件