【问题标题】:Read and divide multiple lines from Stdin从 Stdin 读取并分割多行
【发布时间】:2016-11-28 16:16:39
【问题描述】:

我正在尝试从标准输入读取两行输入,并将第一行的项目复制到一个数组中,并将第二行的项目复制到另一个数组中。每行中的项目之间都有空格,我用它来区分项目。输入示例如下:

1 2 3
4 5 

目前12345 存储在一个数组中,但我希望结果是这样的:

arr1 = [1, 2, 3];
arr2 = [4, 5];

我该怎么做?

import java.util.*;

public class Tester {   

  public static void main (String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Enter lines:");  

    while(input.hasNext()) {

      String s = input.nextLine();
      String[] strArray = s.split(" ");

      int[] intArray = new int[strArray.length];

      for(int i = 0; i < strArray.length; i++) {
        intArray[i] = Integer.parseInt(strArray[i]);
        System.out.print(intArray[i]);
      }
    }
} 

【问题讨论】:

  • 正好有 2 行,使用数组数组(二维数组)。如果行数可变,请使用 ArrayList。
  • 我不明白这个问题。您正在将其拆分为两个数组...除了在同一行中将它们彼此打印之外,您对数组没有做太多的事情,但是您正在拆分它们。
  • 另一种方法是定义标识行尾的符号(一个字符)
  • 感谢大家的回复。我已经更新了我的问题以供澄清。

标签: java arrays split java.util.scanner


【解决方案1】:

您应该将单行的解析提取到单独的方法中:

private static int[] parseInts(String s) {
  String[] strArray = s.split(" ");

  int[] intArray = new int[strArray.length];

  for(int i = 0; i < strArray.length; i++) {
    intArray[i] = Integer.parseInt(strArray[i]);
  }
  return intArray;
}

之后,main 中的代码看起来更简单了:

public static void main (String[] args) {

  Scanner input = new Scanner(System.in);
  System.out.println("Enter lines:");

  int[] line1Numbers = parseInts(input.nextLine());
  int[] line2Numbers = parseInts(input.nextLine());

  // For the remaining lines:
  while(input.hasNext()) {
    String line = input.nextLine();
    int[] numbers = parseInts(line);

    for(int i = 0; i < strArray.length; i++) {
      System.out.print(intArray[i]);
    }
  }
}

【讨论】:

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