java ctrl d不能用_在Java中输入Ctrl D时如何退出程序?

以下是我的反向波兰计算器的一部分.

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

标签:java-util-scanner,ctrl,java,null,exit

来源: https://codeday.me/bug/20191011/1894977.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值