【问题标题】:how to take inputs seperated by new line如何获取由新行分隔的输入
【发布时间】:2017-06-13 22:28:02
【问题描述】:

我有一个换行符的输入。我想将该字符串转换为一个数组,并且对于每一新行,在数组中跳转一个索引位置。

如果输入是:

100
200
300

那么我需要输出是:

110
210
310

我使用了以下代码:

public class NewClass {
    public static void main(String args[]) throws IOException {
        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        String str=br.readLine();
        String [] arrOfStr = str.split("\n");int b=0;
        for (String a : arrOfStr) {
            b=Integer.parseInt(a);
            int c=b+10;
            System.out.println(c);
        }
     }
}

但它没有提供所需的输出。 注意:我们没有从文本文件中获取输入。我们不知道测试用例中有多少输入。我们一口气输入了。

【问题讨论】:

  • 您的代码到底有什么问题?你试过调试吗?
  • @dbf 是的,但它一次只接受一个输入。
  • 使用 str.split("\r\n") 这里有一个完整的主题:stackoverflow.com/questions/454908/…
  • @Waffles 我只得到 110。不是 210 和 310 输出
  • 哦,我误解了您遇到的问题... br.readLine() 只读取一行。如果您希望它在换行后读取,则必须实现一个 while 循环。 str.split 不适用于这种情况。见这里:stackoverflow.com/a/5516075/3072960

标签: java arrays string


【解决方案1】:

详细说明我的评论。

    List<Integer> intList = new ArrayList<Integer>();
    BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
    String str = br.readLine();
    while (!str.isEmpty()) {
        intList.add(Integer.parseInt(str)+10);
        str=br.readLine();

    }
    System.out.println(intList);}

这应该可以了,我正在使用我的手机...

【讨论】:

  • readLine() 将在文件末尾返回null,而不是空字符串。
【解决方案2】:

您可以使用 scanner.hasNext() 代替 -

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    // scanner.useDelimiter("\\r\\n"); // if required to delimit the input 
    while (scanner.hasNext()) {
        int c = Integer.parseInt(scanner.next()) + 10;
        System.out.println(c);
    }
}

使用与您相同的输入 -

100
200
300

输出将是 -

110
210
310

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多