Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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 不在数组中存储值的程序_Java - Fatal编程技术网

Java 不在数组中存储值的程序

Java 不在数组中存储值的程序,java,Java,试图对用户输入的整数编制排序程序,并希望它能够根据用户的需要取任意多的整数,而不首先询问他要排序多少整数,但在输入时它崩溃了, 基本上问题是它没有在数组中存储值 import java.util.Scanner; class apple { public static void main(String[] args){ Scanner scan = new Scanner(System.in); int j = 0; int[] arr;

试图对用户输入的整数编制排序程序,并希望它能够根据用户的需要取任意多的整数,而不首先询问他要排序多少整数,但在输入时它崩溃了, 基本上问题是它没有在数组中存储值

import java.util.Scanner;
class apple {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int j = 0;
        int[] arr;
        arr = new int[j];
        while (true) {
            arr[j] = scan.nextInt();
            if (arr[j]==(int)'\n'){break;}
            j++;
            arr = new int[j];
        }
        for(j = 0 ;j <  arr.length ;j++){
            System.out.print(arr[j] + "    ");
        }

    }
}
import java.util.Scanner;
苹果类{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int j=0;
int[]arr;
arr=新整数[j];
while(true){
arr[j]=scan.nextInt();
如果(arr[j]==(int)'\n'){break;}
j++;
arr=新整数[j];
}
对于(j=0;j
阵列 首先,将
Scanner.hasNextInt()
Scanner.nextInt()
结合使用。接下来,您将创建一个大小为
0
的数组;它不能存储任何值,除非您首先复制它1(因为Java数组是固定长度的)。你可以用它来做。并且,您可以使用在填充数组后显示它。大概

Scanner scan = new Scanner(System.in);
int j = 0;
int[] arr = new int[j];
while (scan.hasNextInt()) {
    arr = Arrays.copyOf(arr, ++j);
    arr[j - 1] = scan.nextInt();
}
System.out.println(Arrays.toString(arr));
List<Integer> al = new ArrayList<>();
while (scan.hasNextInt()) {
    al.add(scan.nextInt()); // <-- int will be autoboxed to Integer
}
// int j = al.size(); // <-- like array.length, if you want to know how
// many numbers were read.
System.out.println(al); // ArrayList, unlike arrays, overrides toString
收藏 Java(如2)更灵活,允许可变数量的元素。遗憾的是,它们不能直接使用基元类型3,但可以用于存储相应的。大概

Scanner scan = new Scanner(System.in);
int j = 0;
int[] arr = new int[j];
while (scan.hasNextInt()) {
    arr = Arrays.copyOf(arr, ++j);
    arr[j - 1] = scan.nextInt();
}
System.out.println(Arrays.toString(arr));
List<Integer> al = new ArrayList<>();
while (scan.hasNextInt()) {
    al.add(scan.nextInt()); // <-- int will be autoboxed to Integer
}
// int j = al.size(); // <-- like array.length, if you want to know how
// many numbers were read.
System.out.println(al); // ArrayList, unlike arrays, overrides toString
List al=new ArrayList();
while(scan.hasNextInt()){

al.add(scan.nextInt());//@Elliot Frisch解释了如何对数组执行此操作,每当您要通过重新分配和复制数组来添加元素时,该数组都会“增长”

一个更简单的想法是将
int[]arr;
替换为

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

然后您可以使用
list.add(scan.nextInt());
将整数添加到列表中。
ArrayList
负责后台存储的“增长”。
LinkedList
在这里也可以工作。)

如果(arr[j]='\n'){break;}
对于int???和大小为0的数组。最好的答案是离开教程,读一本像样的Java书,因为解决方案是学习该语言的基础知识。如果整数数组的索引等于一个新行字符…哈哈,什么。@HovercraftFullOfEels不起作用,即使我键入if(arr[j]=(int){break;}@HovercraftFullOfEels也会在使用以下命令检查的循环中增加数组大小//arr[j]=scan.nextInt();//if(arr[j]==(int)'\n'){break;}j++;arr=new int[j];System.out.println(arr.length);我不确定这是否适合教初学者。实际上没有人这样做。是的,我不懂代码,我认为需要更多地学习deeply@Elliott感谢您在我之前的评论之后编辑您的帖子。我仍然想指出,使用
ArrayList
的技术远远优于technique使用
数组。copyOf