【问题标题】:how to read strings from user till encountering a new-line (Java)?如何从用户读取字符串直到遇到换行符(Java)?
【发布时间】:2018-03-01 22:22:49
【问题描述】:

所以问题是我想读取一个字符串的多行并将它们放入一个 ArrayList 中,只要用户不输入任何内容就不会转到下一行。

示例输入如下所示:

hello 
I am John

这是我尝试过的代码,但它不起作用。 (错误是:“字符串索引超出范围:0”。)

Scanner input = new Scanner(System.in);
ArrayList<String> text = new ArrayList<>();
while (true) {
    String temp = input.nextLine();
    if (temp.charAt(0) == '\n') {
        break;
    }
    text.add(temp);
}

【问题讨论】:

  • if (temp.isEmpty()) break;
  • 也可以使用"".isEqual(temp)

标签: java string newline


【解决方案1】:

您可以尝试if (temp.isEmpty()),因为Scanner 将读取一个空字符串。

Scanner input = new Scanner(System.in);
List<String> text = new ArrayList<>();
while (true) {
    String temp = input.nextLine();
    if (temp.isEmpty()) break;
    text.add(temp);
}

【讨论】:

  • 我还打算建议使用trim,但我猜 [space] 可能被视为有效输入:/
【解决方案2】:

nextLine() 删除行终止符。请参阅 Javadoc。

您应该测试该行是否为

【讨论】:

    【解决方案3】:

    您可以使用https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html

    还有方法 readLine 而不是 Scanner。

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Test {
        public static void main(String[] args) throws IOException {
            List<String> text = new ArrayList<>();
            System.out.println("Start input lines, press enter to stop: ");
            try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
              String line;
              for(;;) {
                  line = reader.readLine();
                  if(null == line || line.length() == 0) 
                      break;
                  text.add(line);             
              } 
            }
            System.out.println("Echo: ");
            text.stream().forEach((String str)-> {
                System.out.println(str);
            });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 2014-05-09
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多