【问题标题】:Input numeric ranges with java.util.Scanner使用 java.util.Scanner 输入数字范围
【发布时间】:2021-09-04 07:18:31
【问题描述】:

我会像这样输入数字范围(int 包含两个元素的数组):

输入一个数字:3
输入范围:-3 5
输入范围:0 4
输入范围:6 10

我使用java.util.Scanner,但我不知道如何继续:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int number = input.nextInt();

    for(int i=0;i<number;i++)
        String str = input.nextLine();
    }
}

【问题讨论】:

  • 我看不出与 C++ 有任何关系;删除标签
  • 您似乎知道如何使用nextInt()。你的问题到底是什么?
  • 我不知道如何进行这样的输入 => 输入一个数字:2 然后输入范围 x y => 输入范围 z k
  • 读完number后,你应该创建一个二维数组来存储范围:int[][] ranges = new int[number][2]; 然后在循环中使用input.nextInt()读取int值并使用嵌套循环分配给范围:for (int j = 0; j &lt; ranges[i].length; j++) {ranges[i][j] = input.nextInt();}

标签: java arrays input java.util.scanner


【解决方案1】:

我认为,您只需找到输入数字数组的解决方案。看看这个:Java Scanner Array

您可以读取整行,然后将其拆分为String 数组:

public static void main(String[] args) {
  try (var scanner = new Scanner(System.in)) {

    System.out.print("Enter the count of arrays: ");
    int arrayCount = scanner.nextInt();
    scanner.nextLine();

    // System.out.print("Enter the length of an array: ");
    int arraySize = 2;

    int[][] ranges = new int[arrayCount][arraySize];

    for (int i = 0; i < arrayCount; i++) {
      System.out.printf("[%d] Enter the elements: ", i);
      String line = scanner.nextLine();
      String[] numbers = line.split("\\D+", arraySize + 1); // separator: 1+ non-digit

      for (int j = 0; j < arraySize; j++) {
        ranges[i][j] = Integer.parseInt(numbers[j]);
      }
    }
    // Arrays.stream(ranges).map(Arrays::toString).forEach(System.out::println);
  }
}

或者简单地一一扫描ints:

public static void main(String[] args) {
  try (var scanner = new Scanner(System.in)) {

    System.out.print("Enter the count of arrays: ");
    int arrayCount = scanner.nextInt();

    // System.out.print("Enter the length of an array: ");
    int arraySize = 2;

    int[][] ranges = new int[arrayCount][arraySize];

    for (int i = 0; i < arrayCount; i++) {
      System.out.printf("[%d] Enter the elements: ", i);
      for (int j = 0; j < arraySize; j++) {
        ranges[i][j] = scanner.nextInt();
      }
    }
    // Arrays.stream(ranges).map(Arrays::toString).forEach(System.out::println);
  }
}

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 2014-01-17
    • 2013-12-25
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多