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];
既然如此,我倾向于怀疑你的说法,你说你的分拣部分工作了——你没有一个合适的地方来储存输入的重量。也许你从你展示的代码中删去了这一部分。事实上,如果你的程序有任何排序的外观,那么你一定在它上做了相当多的黑客工作。重新做缩进并检查括号。请格式化你的代码,只是看一下,我可能怀疑你缺少一些花括号。重新做缩进并检查括号。请格式化你的代码,只是看了一下,我可能会怀疑你遗漏了一些花括号。