下面是我的反向波兰计算器的一部分。
如果输入一个整数,将其压入堆栈,如果按下 =,查看结果。但是,我想添加另一个条件:如果用户按下 CTRL + D,则程序退出。
我在网上看过,但似乎找不到任何解决方案。有任何想法吗?谢谢。
Scanner mySc = new Scanner(System.in);
//If input is an integer, push onto stack.
if (mySc.hasNextInt()) {
myStack.push(mySc.nextInt());
}
//Else if the input is an operator or an undefined input.
else if (mySc.hasNext()) {
//Convert input into a string.
String input = mySc.nextLine();
//Read in the char at the start of the string to operator.
char operator = input.charAt(0);
if (operator == '=') {
//Display result if the user has entered =.
}
**else if ("CTRL-D entered") {
System.exit(0);
}**
最佳答案
试试这个:
public static void main(String[] args) {
try {
byte[] b = new byte[1024];
for (int r; (r = System.in.read(b)) != -1;) {
String buffer = new String(b, 0, r);
System.out.println("read: " + buffer);
}
} catch (Exception e) {
e.printStackTrace();
}
}
在这种情况下,当您按下 CTRL+D 时,循环将停止,这是因为 CTRL+D向 System.in
InputStream
发送一个 EOF
信号,它是 -1
。在*nix系统上就是这种情况,对于Windows系统,EOF
信号是使用CTRL+Z组合键发送的
关于java - Java中输入Ctrl+D时如何退出程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33940564/