Java 如何将输入读入ArrayList?

Java 如何将输入读入ArrayList?,java,arraylist,Java,Arraylist,我已经知道ArrayList的大小了。我还看到了其他的问题,但是当尺寸未知时,他们使用hasNext阅读。当数组大小以前已知时,我如何这样做?我只是想使用内置函数,比如rotate,因此我想创建它。但这根本不起作用。它不会在列表中添加任何内容。我甚至尝试将其作为数组读取,并使用Collections.addAll将其放入新的ArrayList,但这也不起作用。当我试图将读取后的数组转换为ArrayList时,会出现其他错误。我还尝试将其作为整数变量读取,并将其添加到列表中,而不直接插入。我只插入

我已经知道ArrayList的大小了。我还看到了其他的问题,但是当尺寸未知时,他们使用hasNext阅读。当数组大小以前已知时,我如何这样做?我只是想使用内置函数,比如rotate,因此我想创建它。但这根本不起作用。它不会在列表中添加任何内容。我甚至尝试将其作为数组读取,并使用Collections.addAll将其放入新的ArrayList,但这也不起作用。当我试图将读取后的数组转换为ArrayList时,会出现其他错误。我还尝试将其作为整数变量读取,并将其添加到列表中,而不直接插入。我只插入了一个元素。我不知道为什么

编辑:这是从我的部分输入错误。问题解决了。

使用scan.nextLine,您可以在同一行中获得多个号码,而不是通过调用scan.nextLine逐个输入。代码如下所示:

public static void main(String[] args) 
{
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while (t-->0) 
        {
            int n=sc.nextInt();
            ArrayList <Integer> arr=new ArrayList<Integer>();
            for(int i=0; i<n; i++) 
            {
                arr.add(sc.nextInt());
            }
            System.out.println(arr);
       }
}

您确实需要学习基本的调试技术,比如在调试器中单步调试代码。代码中有一个明显的错误,这需要程序员能够读懂代码并在头脑中执行它,否则编写任何代码都太困难了。请告诉我@markspace可能我只是累了,但除了缺少右括号外,我没有看到明显的错误,但这可能是复制粘贴错误,因为OP说它运行。如果他们尝试读取一个数组,他们会循环两次。我不知道这是否是一个错误,或者他们是否没有正确地描述他们的问题@FedericoklezCulloca@AkhilaRajeev我不确定是什么问题。我在我的机器上运行了这个程序,它的工作原理和我期望的一样,输入一个数字给外循环,一个数字给中循环,n个数字给内循环,然后它打印n个数字。看见
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static Integer[] convertToIntArray(String[] arr) {
        int index = 0;
        Integer[] numbers = new Integer[arr.length];

        for (int i = 0; i < arr.length; ++i) {
            try {
                numbers[index] = Integer.parseInt(arr[i]);
                ++index;
            } catch (NumberFormatException nfe) {
                // This part skips invalid input, which is not a number.
                // by not saving the skipped element to the array.
            }
        }
        return numbers;
    }

    public static void main(String[] args) {
        // Get the line containing numbers from the user.
        System.out.println("Input numbers: ");
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        // Split sentence into words.
        String[] arr = s.split("\\W+");
        // Convert string array of numbers to int.
        Integer[] numbers = convertToIntArray(arr);
        System.out.println(Arrays.toString(numbers));
    }
}
Input numbers: 
1 2 3 4 5 6 7 8 9 10
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]