如何从用户处读取字符串直到遇到新行(Java)?

如何从用户处读取字符串直到遇到新行(Java)?,java,string,newline,Java,String,Newline,所以问题是,我想读取字符串的多行,并将它们放入ArrayList中,只要用户没有输入任何内容就不会转到下一行 以下是示例输入的外观: hello I am John 这是我尝试过的代码,但它不起作用。(错误为:“字符串索引超出范围:0”。) 扫描仪输入=新扫描仪(System.in); ArrayList text=新的ArrayList(); while(true){ 字符串temp=input.nextLine(); 如果(温度字符(0)='\n'){ 打破 } 文本。添加(临时); }

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

以下是示例输入的外观:

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

扫描仪输入=新扫描仪(System.in);
ArrayList text=新的ArrayList();
while(true){
字符串temp=input.nextLine();
如果(温度字符(0)='\n'){
打破
}
文本。添加(临时);
}
如果(temp.isEmpty())扫描仪将读取空字符串,则可以尝试

Scanner input = new Scanner(System.in);
List<String> text = new ArrayList<>();
while (true) {
    String temp = input.nextLine();
    if (temp.isEmpty()) break;
    text.add(temp);
}
扫描仪输入=新扫描仪(System.in);
列表文本=新的ArrayList();
while(true){
字符串temp=input.nextLine();
如果(温度为空())中断;
文本。添加(临时);
}
nextLine()
删除行终止符。请参阅Javadoc

您应该测试该行是否为空。

您可以使用

该方法使用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);
        });
    }
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.List;
公开课考试{
公共静态void main(字符串[]args)引发IOException{
列表文本=新的ArrayList();
System.out.println(“开始输入行,按enter键停止:”);
try(BufferedReader=new BufferedReader(new InputStreamReader(System.in))){
弦线;
对于(;;){
line=reader.readLine();
if(null==line | | line.length()==0)
打破
文本。添加(行);
} 
}
System.out.println(“Echo:”);
text.stream().forEach((字符串str)->{
系统输出打印项次(str);
});
}
}

如果(temp.isEmpty())中断
也可以使用
”。isEqual(temp)
。我本来打算建议也使用
trim
,但我想[space]可能被认为是有效的输入:/
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);
        });
    }
}