为什么方法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
答案 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,而不仅仅是另一个令牌。