readLine()无法正常工作

时间:2013-06-25 06:10:47

标签: java if-statement java-io method-parameters

我有readLine()的问题,即我的系统不接受我的任何输入请求,它直接执行下一行我的代码中的代码是错误的:

System.out.println("Choose your option:\n"
                + "To Add   :\tA/a\n"
                + "To Delete:\tD/d\n"
                + "To Update:\tu/U\n"
                + "To Exit  :\tpress any key");
        char ch = (char) br.read();
        //br.readLine().charAt(0);
        br.skip(1);
        if(ch =='a' || ch == 'A'){
           addElement();
        }
        else if(ch == 'd' || ch == 'D') {
            System.out.println("Please enter emp id :");
            int id = Integer.parseInt(br.readLine());
            //int id = Integer.parseInt(System.console().readLine("enter emp"));
            deleteElement(id);
        }
        else if(ch == 'u' || ch == 'U') {
            System.out.println("Please enter emp id :");
            int id = Integer.parseInt(br.readLine());
            updateElement(id);
        }
        else System.exit(0);

此代码仅在netbeans命令模式下工作,感谢

无法访问

2 个答案:

答案 0 :(得分:2)

问题是这里读到的第一个字符是:

char ch = (char) br.read();

...在你点击返回之前将无法使用,此时你有一个空行。

如果您运行代码并输入

dSomeone

(然后点击返回)然后你会得到一个名字“Someone”来试图删除。

最简单的方法可能是使用:

String option = br.readLine();
if (option == null) {
    // User has basically terminated stdin. Die somehow
}

if (option.equalsIgnoreCase("D")) {
    String name = br.readLine();
    ...
}

另请注意,此代码无效:

String empName = br.readLine();
deleteElement();

要求输入名称,但忽略它。 deleteElement如何知道您要删除哪个员工?您应该将该名称作为该方法的参数,并在调用时提供它:

String empName = br.readLine();
deleteElement(empName);

答案 1 :(得分:0)

如果您通过cmd行(终端)输入

,请尝试此操作

String emp = System.console()。readLine(“请输入emp名称”);