【问题标题】:Read multiple lines STDIN Java读取多行 STDIN Java
【发布时间】:2016-06-05 23:31:41
【问题描述】:

我需要从 java 中的标准输入读取多行。 例如我需要阅读这两行:

A A A H
A E D A H

并为每一行给出答案。 我做了这个,但我可以停下来

Scanner sc = new Scanner(System.in);    
Posicao p;
int max[][] = new int[4][], j = 0;
String com;
String[] b;
char[] c;

       while(sc.hasNextLine()){
            p = new Posicao();
            com = sc.nextLine();
            b = com.split(" ");
            c = new char [b.length];
            for(int i = 0;i<b.length;i++) c[i] = b[i].charAt(0);            
            p.comando(c);
            max[j++] = p.retorna();
        }

【问题讨论】:

  • 你能解决这个问题吗?
  • 是的,因为我的测试用例在一个文件中,这样扫描仪可以检测是否有下一行。
  • 这个问题写得不好:“但我可以停下来”?你的意思是“不能”,不是吗?请修正错别字并给您的问题一个更好的标题,例如“如何停止从 Java 中的标准输入读取行?”

标签: java stdin


【解决方案1】:

理想情况下,您需要修改这部分while(sc.hasNextLine()) 以打破循环。您知道以下任何值吗?

  • 行数
  • 您可以使用任何特殊字符来查找输入结尾

【讨论】:

  • 我不知道行数,我唯一知道的是每行都以 H 结尾。我需要粘贴这两行以停止循环。
【解决方案2】:

您可以检查用户输入的内容并在空输入或“退出”一词时退出:

/*This would go in your while loop, after you process the input*/


      if (com.equals("") | com.equals("exit")) {
            System.out.println("Exiting...");
            break;
        } else
            System.out.println("Still in loop");

【讨论】:

  • 这可以工作,但我只需要阅读此行并退出程序。
  • 读什么行?在什么情况下你想停止阅读?
【解决方案3】:
if (com.isEmpty()) {
    break;
}

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 1970-01-01
    • 2012-04-09
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2017-01-02
    • 1970-01-01
    相关资源
    最近更新 更多