Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个整数添加到同一行上的ArrayList_Java_Arrays_Arraylist - Fatal编程技术网

Java 将多个整数添加到同一行上的ArrayList

Java 将多个整数添加到同一行上的ArrayList,java,arrays,arraylist,Java,Arrays,Arraylist,我正在编写一个程序,它将接受用户输入,并根据用户选择的内容按升序或降序进行排序。我尝试使用一个简单的数组,但它不能与数组排序方法一起正常工作,所以我尝试了一个ArrayList。除了它只读取用户键入的第一个int之外,这似乎是可行的。我尝试了addAll方法,但它似乎只适用于集合,而不适用于变量 这是我的代码: import java.util.Scanner; import java.util.ArrayList; import java.util.Collections; public cl

我正在编写一个程序,它将接受用户输入,并根据用户选择的内容按升序或降序进行排序。我尝试使用一个简单的数组,但它不能与数组排序方法一起正常工作,所以我尝试了一个ArrayList。除了它只读取用户键入的第一个int之外,这似乎是可行的。我尝试了addAll方法,但它似乎只适用于集合,而不适用于变量

这是我的代码:

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
public class ElevenThree {
    public static void main (String[] args) {
        Scanner scan = new Scanner(System.in);
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        int size = 0;
        int type = scan.nextInt();
        if(type == 0) {
            size = scan.nextInt();
            arrayList.add(scan.nextInt());
            Collections.sort(arrayList);
        }
        if (type == 1) {
            size = scan.nextInt();
            arrayList.add(scan.nextInt());
            Collections.sort(arrayList, Collections.reverseOrder());
        }
        System.out.println(arrayList);
    }
}
输出:

[4]
顺便说一句,这里有一个size变量,因为这是一个通过程序自动输入size变量的赋值,所以它需要在那里,即使它不会以任何方式影响程序。

当你说
nextInt()
时,它只取第一个整数,即
4

您需要在循环中获取输入

for (int i = 0; i < size; i++) {
    arrayList.add(scan.nextInt());
}
for(int i=0;i

注意:在一行中输入整数将允许您输入无限整数,但它只接受
n
整数,其中
n
大小。如果您在不同的行中输入每个输入,程序将在
n
输入后停止。

您的问题是使用
scan.nextInt()
。当您键入
4 3 6 8 9 2 1 5 7
时,您将发送一个字符串
“4 3 6 8 9 2 1 5 7”
,不再发送整数。然后由您来拆分此字符串。@OlivierDepriester实际上,我非常确定
Scanner#nextInt
可以处理由空格分隔的整数是的,但不能作为整数数组处理,因为它将提取标记,直到找到一个非数字的标记为止。看看@Harshal Parekhanswer@OlivierDepriester好的,我认为您建议对所有子字符串使用scan.next()和String#split,然后是Integer.parseInt
for (int i = 0; i < size; i++) {
    arrayList.add(scan.nextInt());
}