使用BufferedReader读取由换行符分隔的字符串到String数组中

时间:2016-06-17 12:04:48

标签: java regex string bufferedreader

我已经阅读了这些问题的数量,但它们都是关于从txt文件中读取输入。我想读取用户的输入而不是文件。

我输入如下:

6   //number of total Strings to store in array 
babu   
anand
rani    
aarti
nandu
rani

我已尝试使用以下代码在String数组中进行此类输入:

    int n = in.nextInt();    // n= 6 here
    String[] s = new String[n];   //String array of size 6 here
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try{
         s = br.readLine().split("\\s");
    }
    catch(Exception e){
        System.out.println(e);
    } 

提供给regex的{​​{1}}是否正确?我在这里失踪了什么?如果这不是我应该为这个问题做的正确方法吗?

2 个答案:

答案 0 :(得分:0)

正则表达式在使用斜杠\时使用反斜杠(//s),正确的是\\s

但是不需要这种分割,你只需要readLine,你就会得到你需要的东西(假设你不想在行中分割单词)。

您应该使用循环来读取所有数据(并删除您在in变量中显示的扫描程序):

String[] s = null
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) {
    int n = Integer.parseInt(br.readLine());
    for (int line = 0; line < n; line++) {
        s[line] = br.readLine();
    }
} catch(Exception e){
    System.out.println(e);       
} 

答案 1 :(得分:0)

在第一行之前移动第三行。

然后在新的第二行中使用它:

int n = Integer.parseInt(br.readLine());

当然,您需要一个循环将输入字符串放入数组中。

这应该有所帮助。