java - Java中输入Ctrl+D时如何退出程序?

标签 java null java.util.scanner exit ctrl

下面是我的反向波兰计算器的一部分。

如果输入一个整数,将其压入堆栈,如果按下 =,查看结果。但是,我想添加另一个条件:如果用户按下 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+DSystem.in InputStream 发送一个 EOF 信号,它是 -1。在*nix系统上就是这种情况,对于Windows系统,EOF信号是使用CTRL+Z组合键发送的

关于java - Java中输入Ctrl+D时如何退出程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33940564/

相关文章:

java - Mockito 中泛型方法的 ArgumentCaptor

c - 在C中,如何区分未初始化的指针和空指针?

java - 在 Spring bean 中实现空对象设计模式

使用正则表达式的Java字符串拆分/解析问题

Java - 向我的程序添加基本统计数据

java - ImageView onTouchListener : cant touch the imageview behind

java - 调整图像大小以适合 JLabel

java - 如何在 Spring 中为单元测试创​​建 HttpServletResponse?

json - 使用 SwiftyJSON 处理 nil 值

java - 扫描仪永远不会关闭