在Java中如何将一行整数作为输入?

在Java中如何将一行整数作为输入?,java,Java,我试图将下面这行代码作为Java的输入,但没有得到所需的输出。我想要数组列表中的所有整数 输入: 2个测试用例 5第一个测试用例数组的大小 1 2 3 5 4第一个测试用例数组中的元素 4第二个测试用例数组的大小 66 45 778 51第二个测试用例数组中的元素 代码: 使用sc.nextLine。它返回一个字符串,但通过在每个空格后拆分输入,您将得到一个包含所有整数的字符串[]。如果在它们上循环并将其转换为int,则可以将它们添加到列表中。 以下是我将如何做到这一点的示例: import j

我试图将下面这行代码作为Java的输入,但没有得到所需的输出。我想要数组列表中的所有整数

输入:

2个测试用例 5第一个测试用例数组的大小 1 2 3 5 4第一个测试用例数组中的元素 4第二个测试用例数组的大小 66 45 778 51第二个测试用例数组中的元素 代码:

使用sc.nextLine。它返回一个字符串,但通过在每个空格后拆分输入,您将得到一个包含所有整数的字符串[]。如果在它们上循环并将其转换为int,则可以将它们添加到列表中。 以下是我将如何做到这一点的示例:

import java.util.ArrayList;
import java.util.Scanner;

class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("How many numbers?");
    int tc = Integer.valueOf(sc.nextLine());

    for(int i = 0; i < tc; i++) {
        System.out.println("Next number");
        ArrayList<Integer> list = new ArrayList<Integer>();
        String line = sc.nextLine();

        String[] arr = line.split("\\s");
        for(int j = 0; j < arr.length; j++){
            list.add(Integer.parseInt(arr[j]));
        }
        System.out.print(list);
    }

    sc.close();
  }

}

我不太确定你的问题是什么,但我想你只是对读一串数字123454感兴趣,并把它转换成一个数组[1,2,3,4,5,4]

String input= "1 2 3 4 5 4";
String[] stringList = input.split(" ");
int[] integerList = new int[stringList .length()];
for(int i = 0; i < listOfS.length(); i++) {
    integerList[i] = Integer.parserInt(stringList[i]);
}
首先,必须使用input.split将字符串拆分为元素。这将在每个空格符号处拆分字符串输入。
然后必须将字符串[]转换为int[]。这是通过对字符串[]进行迭代并使用Integer.parseInt将其内容解析为整数来完成的。

这样做是为了满足您的需要

导入java.util.ArrayList; 导入java.util.List; 导入java.util.Scanner; 公共班机{ 公共静态无效字符串[]args{ 扫描仪sc=新的扫描系统.in; int tc=sc.nextInt; 对于int i=0;i0{ list.addsc.nextInt; } System.out.printlist; } } }
下面是一个用于数字处理的简单解决方案:

List<Integer> list = new ArrayList<>();

Scanner scanner = new Scanner(System.in);
int testCases = Integer.parseInt(scanner.nextLine());

for (int i = 0; i < testCases; i++) {
    scanner.nextLine(); // skip "size" line as we don't use it in this solution
    Arrays.stream(scanner.nextLine().trim().split("\\s+"))
            .map(Integer::parseInt)
            .forEach(list::add);
}

list.forEach(e -> System.out.printf("%d ", e));
输出

2 3 4 5 99 77 解释

数组。流…-从提供的数组的元素创建流 scanner.nextLine.trim.split\\s+-从扫描器中读取一行,在开始和结束处修剪空白,用一个或多个空白将其拆分为字符串[] .mapInteger::parseInt-将每个字符串元素转换为整数 .forEachlist::add-将每个整数元素添加到列表中
请将您的问题包含在您的完整源代码中,这些源代码可以由其他人编译和测试。具体错误…?可能重复@khelwood my bad。刚刚编辑过。我的意思是,没有得到期望的输出。你得到的异常是什么?
String input= "1 2 3 4 5 4";
String[] stringList = input.split(" ");
int[] integerList = new int[stringList .length()];
for(int i = 0; i < listOfS.length(); i++) {
    integerList[i] = Integer.parserInt(stringList[i]);
}
List<Integer> list = new ArrayList<>();

Scanner scanner = new Scanner(System.in);
int testCases = Integer.parseInt(scanner.nextLine());

for (int i = 0; i < testCases; i++) {
    scanner.nextLine(); // skip "size" line as we don't use it in this solution
    Arrays.stream(scanner.nextLine().trim().split("\\s+"))
            .map(Integer::parseInt)
            .forEach(list::add);
}

list.forEach(e -> System.out.printf("%d ", e));