Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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_Arrays_Loops - Fatal编程技术网

Java 如何修复按重量排序包裹的循环

Java 如何修复按重量排序包裹的循环,java,arrays,loops,Java,Arrays,Loops,我需要创建一个程序,询问客户他们有多少个包裹(输入后,它会创建一个该大小的数组),然后要求客户输入包裹的重量。然后,它必须将包分为小、中或大,然后打印每个大小包的数量 public static void main(String[] args) { Scanner scan = new Scanner(System.in); int small = 0; int medium = 0; int large = 0; int size = 0; in

我需要创建一个程序,询问客户他们有多少个包裹(输入后,它会创建一个该大小的数组),然后要求客户输入包裹的重量。然后,它必须将包分为小、中或大,然后打印每个大小包的数量

public static void main(String[] args)
{
    Scanner scan = new Scanner(System.in);
    int small = 0;
    int medium = 0;
    int large = 0;
    int size = 0;
    int[] intArray = {size}; 


    System.out.printf("Please enter the number of weights to enter: ");
    size = scan.nextInt();



    for (double i = 0; i < intArray.length; i++){
        if (i < size)
            System.out.print("Please Enter weight1: ");
            double weights = scan.nextInt();




    System.out.println("\nPackage Weights");
        System.out.print(weights);



        if (weights <= 5)
            small = 1 + small;
        if (weights <= 10 && weights >= 6)
            medium = 1 + medium;
        if (weights >= 11)
            large = 1 + large;

            System.out.println("\n\nSmall: " + small);
            System.out.println("Medium: " +  medium);
            System.out.println("Large:" + large);

    }
}
publicstaticvoidmain(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
int小=0;
int-medium=0;
int-large=0;
int size=0;
int[]intArray={size};
System.out.printf(“请输入要输入的权重数:”);
size=scan.nextInt();
for(双i=0;i
}


我让排序工作,但我只能让它要求一个包,这意味着我的数组和循环不工作。刚才在学习数组/循环,所以我有点困在这上面了

问题在于初始化intArray的时间。 在使用值0初始化size之后,它将被初始化。 因此,数组中只有一个元素

您只需在用户输入后移动intArray的初始化:

int[] intArray; 


    System.out.printf("Please enter the number of weights to enter: ");
    size = scan.nextInt();
    intArray = new int[size]; //<-- initialization of the array after the user input 


    for (double i = 0; i < intArray.length; i++){
int[]数组;
System.out.printf(“请输入要输入的权重数:”);
size=scan.nextInt();

intArray=新整数[大小]// 问题是初始化intArray的时间。 在使用值0初始化size之后,它将被初始化。 因此,数组中只有一个元素

您只需在用户输入后移动intArray的初始化:

int[] intArray; 


    System.out.printf("Please enter the number of weights to enter: ");
    size = scan.nextInt();
    intArray = new int[size]; //<-- initialization of the array after the user input 


    for (double i = 0; i < intArray.length; i++){
int[]数组;
System.out.printf(“请输入要输入的权重数:”);
size=scan.nextInt();

intArray=新整数[大小]// 它只要求一个包,因为您将
intArray
初始化为只包含一个元素的数组。与其在声明中毫无意义地初始化它,还不知道它需要多大,不如在输入长度后创建并分配所需的数组。您可以选择将整个声明移至此处:

    // ...
    size = scan.nextInt();
    int[] intArray = new int[size];

既然如此,我倾向于怀疑你的说法,你说你的分拣部分工作了——你没有一个合适的地方来储存输入的重量。也许你从你展示的代码中删去了这一部分。事实上,如果你的程序有任何排序的假象,那么你必须对它执行相当复杂的操作。

它只要求一个包,因为你将
intArray
初始化为只包含一个元素的数组。与其在声明中毫无意义地初始化它,还不知道它需要多大,不如在输入长度后创建并分配所需的数组。您可以选择将整个声明移至此处:

    // ...
    size = scan.nextInt();
    int[] intArray = new int[size];

既然如此,我倾向于怀疑你的说法,你说你的分拣部分工作了——你没有一个合适的地方来储存输入的重量。也许你从你展示的代码中删去了这一部分。事实上,如果你的程序有任何排序的外观,那么你一定在它上做了相当多的黑客工作。

重新做缩进并检查括号。请格式化你的代码,只是看一下,我可能怀疑你缺少一些花括号。重新做缩进并检查括号。请格式化你的代码,只是看了一下,我可能会怀疑你遗漏了一些花括号。