【问题标题】:Java System.in issueJava System.in 问题
【发布时间】:2011-01-16 01:49:46
【问题描述】:
public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

           while (sc.hasNext()) {

               if (sc.next().equals("exit")){
                   System.out.println("EXITING");
                   System.exit(0);
               }  else {
                   System.out.println("IM STILL WORKING ok?");
               }

            }

    }
}

所以这是我前几天正在编写的一段代码,试图弄清楚某事(实际上并不重要)。执行这段代码的结果是:

eIM 还可以吗?

eIM 还可以吗?

退出

我还可以吗?

退出

退出

有人能解释一下为什么会这样吗?我的意思是扫描仪没有捕捉到单词 exit 的第一次出现。

【问题讨论】:

    标签: java java.util.scanner


    【解决方案1】:

    这段代码是正确的,它适用于我——你确定你已经编译并运行了最新的代码吗?

    e
    IM STILL WORKING ok?
    e
    IM STILL WORKING ok?
    e
    IM STILL WORKING ok?
    ex
    IM STILL WORKING ok?
    exit
    EXITING
    

    【讨论】:

    • java 版本 "1.6.0_22" Java(TM) SE 运行时环境 (build 1.6.0_22-b04-307-10M3261) Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03- 307,混合模式)如果你质疑我的java版本。我真的无法重现它(事实上我不得不写两次“exit”)
    • 不,我的意思是自上次编译以来,您是否对代码进行了任何更改?
    • 这是一个很难记住的问题......老实说,我真的说不出来。我不记得了。这与 Scanner 没有收到 exit 这个词有什么关系?
    • 因为您发布的代码可能没有产生您发布的输出。
    • 唯一认为不正确的是exit和EXITING之间有一个空行。抱歉,发布问题时出现格式错误
    【解决方案2】:

    我想我知道问题出在哪里。现在复制它......按了几次输入按钮(按钮e),然后是快速返回按钮(输入)。这就是为什么有些行既有输入又有输出。之后,扫描仪无法获得第一次退出。这对我来说没有多大意义,因为我认为我所做的不应该造成任何麻烦。

    【讨论】:

      猜你喜欢
      • 2023-01-20
      • 2015-04-25
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多