方法hasNextline()不起作用

时间:2016-02-02 06:55:04

标签: java netbeans

为什么方法hasNextLine()在Netbeans 8.1中不起作用?当我按ctrl + z或ctrl + d时没有任何反应。谢谢

while (kb.hasNextLine()) {
        String str = kb.nextLine();//reads the transaction
        //isVallid checks if the transaction is valid 
        if (!isValid(str)) {
            throw new IllegalArgumentException("The transaction is not valid");
        }

        int x, y;//the valuse of x and y
        x = getX(str);//recognize and convert the valu of x to integer.
        y = getY(str);//recognize and convert the valu of y to integer.

        if (buyOrSell(str))//buyOrSell can recongnoize we buy or we sell.
        {
            justAddToQueueu(myQueue, x, y);// buy
        } else {
            capitalGain += removeAndCalculate(myQueue, x, y);// sell
        }
        System.out.println("Please enter the next valid transaction:"
                + "\nor press ctrl+D(ctrl+Z for mac) for exit.");
        //for exit you can press ctrl+D (or

2 个答案:

答案 0 :(得分:1)

请注意,由于OP创建移动目标问题,此答案不再适用。

原因是一旦你调用hasNextLine,就会通过它而不会再回复它。所以String str=kb.nextLine();正在考虑过去。另外,请记住变量的范围在它声明的括号内。因此,在程序的其余部分中无法访问“str”。你需要做的是这样的事情:

String check;
String str = "";
while(true){
    check = kb.nextLine();
    if (check.matches("^.+"))
        str += check;
    else
        break;
    }

当然,假设你的while循环的目的是将所有用户输入累积到一个String中。如果没有,只需从+删除+=

希望这有帮助!

答案 1 :(得分:-1)

我认为你可以使用hasNext()而不是hasNextLine()。这就是原因:

  

你没有指定你的意思是哪个版本的hasNext(),但基本上,只要扫描程序封装了数据源中的另一个标记,hasNext()返回true.hasNextLine()另一方面返回如果有另一行输入可用,则为true,而不仅仅是另一个令牌。