0

我对 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 命令模式下工作,无法访问,谢谢

4

2 回答 2

2

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

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

... 在您点击返回之前将不可用,此时您有一个空行。

如果您运行代码并键入

dSomeone

(然后按回车键)然后你会得到一个“某人”的名字来尝试删除。

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

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);
于 2013-06-25T06:15:21.210 回答
0

如果您通过 cmd 行(终端)获取输入,请尝试此操作

String emp = System.console().readLine("请输入员工姓名");

于 2013-06-25T06:20:19.137 回答