如何修复此循环以按重量对包进行排序

时间:2017-12-07 15:29:02

标签: java arrays loops

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

Path p = Paths.get("C:/Users/Public/Mycode/HelloWorld.java");
System.out.println(p.endsWith(".java")); // false
System.out.println(p.endsWith("HelloWorld.java")); // true

}

我让排序工作,但我只能要求一个包,这意味着我的数组和循环不起作用。刚刚学习阵列/循环,所以我有点坚持这个。

2 个答案:

答案 0 :(得分:2)

它只询问一个包,因为您将intArray初始化为一个只包含一个元素的数组。在您甚至不知道它需要多大之前,不要在其声明中毫无意义地初始化它,而是在输入其长度后创建并分配所需的数组。您可以选择将整个声明移到那里:

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

因为在这种情况下,我倾向于怀疑你声称你的分拣部件在工作 - 你没有合适的地方存放输入的重量。也许你从你提出的代码中删除了那部分。事实上,如果您的程序有任何类似的排序,那么您必须在其上执行相当多的黑客工作。

答案 1 :(得分:0)

问题是你的intArray初始化的时间。 在使用值0初始化大小之后初始化它。 因此,您最终会在阵列中使用单个元素。

您需要做的就是在用户输入后移动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++){