我要求用户输入1到100之间的数字,并将它们分配到数组中.数组大小未被初始化,因为它取决于用户输入数字的次数.
我应该如何分配数组长度?
如果用户输入5 6 7 8 9(5个数字),则
int[] list;
变
int[] list = new int[5];
我试图使用一个循环,但它不会停止.
int[] integers; int j = 0; do { integers = new int[j + 1]; integers[j] = in.nextInt(); j++; } while((integers[j-1] >= 1) ||(integers[j-1]) <= 100);
解决方法
你应该使用
List
这样的东西,而不是数组.作为一般的经验法则,当您不知道要在手之前添加到数组中的元素数量,请改用List.大多数人可能会通过使用
ArrayList
来解决这个问题.
如果您真的不能使用列表,那么您可能必须使用一些初始大小(可能是10?)的数组,并跟踪您的数组容量,而不是添加多少元素,并将元素复制到一个新的更大的数组,如果你用完了(这本质上是ArrayList在内部做的).还要注意,在现实世界中,你永远不会这样做 – 你将使用专门为这样的案例制作的标准类之一,例如ArrayList.