有没有办法在java中创建一个数组,而无需先定义或询问它的长度? A.k.a用户输入一些数字作为参数,程序创建一个包含多个参数的数组。输入数组而不知道它的大小
回答
有没有办法在java中创建数组,而无需先定义或询问其长度? A.k.a用户输入一些数字作为参数,程序创建一个包含多个参数的数组。
目前还不清楚你是什么情况。如果你知道在执行时间,但不是在编译时数组的长度,这很好。
public class Test {
public static void main(String[] args) {
int length = Integer.parseInt(args[0]);
String[] array = new String[length];
System.out.println("Created an array of length: " + array.length);
}
}
您可以运行为:
java Test 5
,它会创建长度为5
数组如果你真的在你需要创建它之前并不知道数组的长度 - 例如,如果你要向用户询问元素,然后让它们在完成时输入一些特殊值,那么你会可能要使用某种List
,如ArrayList
。
例如:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter numbers, with 0 to end");
List<Integer> list = new ArrayList<>();
while (true) {
int input = scanner.nextInt();
if (input == 0) {
break;
}
list.add(input);
}
System.out.println("You entered: " + list);
}
}
您可以然后再转换List
到一个数组,如果你真的需要,但最好你可以继续使用它作为一个List
。
您需要为此使用ArrayList。
编辑:
米罗斯拉夫最有可能是一名学生试图完成的任务。通常在这些作业中,你会被要求从标准输入中读取数值,并对它们做些什么。在这种情况下,将它们存储在一个数组中。所以,当他有价值存储在数组中时,他不知道有多少值会到来。所以,ArrayList是要走的路。
这并非完全正确。您可以将int传递给创建数组的方法 – 2015-02-07 12:15:32
当你只需要添加元素时,ArrayList可能是这种情况下的最佳结构。如果您想要从集合的中间添加/删除元素,请改用LinkedList。
Is there a way to make an array in java, without defining or asking for it's length first ?
是的,有可能在Java中。尽管这在C++中是不可能的。 C++需要在编译时确定数组的大小。
在Java中,您可以在运行时创建新阵列。
int[] array; //Create a reference of int array (no arrays created yet)
//Prompt for size..
Scanner scn = new Scanner(System.in);
System.out.println("Enter size of array;")
int size = scn.nextInt();
array = new int[size]; //this is allowed in Java
一些额外的信息:
注意到,数组大小固定的。一旦确定了大小(即使在运行时),你也不能再改变它了。但是,如果您想“扩展”数组大小,则有解决方案。
//continuing from above coding example..
array = new int[newSize];
这样做会将array
指向一个新阵列。因此,如果您想保留旧数组的值,则必须手动将旧数组元素复制到新数组中。 但是,这是不高效的。
一种有效的增长和缩小阵列大小的方法是使用List
或ArrayList
。但要在阵列上单独回答你的问题。是的,您可以在运行时创建它,也可以在运行时将您的数组引用指向另一个数组。
- 1. 我可以输入数组而不知道它的大小吗? (C)
- 2. 数组如何知道它的大小?
- 3. 传递2d数组而不知道大小?
- 4. 不知道大小
- 5. 如何知道const数组的大小?
- 6. delete []如何知道数组的大小?
- 7. C++声明不知道大小的数组数组
- 8. 不知道大小的输入字符串
- 9. “的sizeof”知道数组的大小函数在C不工作
- 10. 用户输入数组大小的输入,但数组大小不等于用户输入
- 11. C++最大/在一个数组分钟元素不知道数组的大小
- 12. 在结构中声明2D数组而不知道结构中的大小?
- 13. C:复制数组而不知道它的类型
- 14. 未知输入大小
- 15. 从C到C#的调用不知道数组的大小
- 16. 基于输入文件的未知大小的数组
- 17. 通过汇编中的值传递字符串,而不知道它的大小
- 18. 使用request.POST而不知道输入的名称和数量
- 19. 在java中输入未知大小的数组
- 20. 如何数组排序[数组[INT]]假设内部数组的大小相同,但我们不知道它
- 21. 确定输入数组的大小plpgsql
- 22. 输入二维数组的大小
- 23. 打印一个数组,不知道大小
- 24. 大小是不知道的帮助
- 25. 如何在不知道原始数组大小的情况下增加动态数组(C++)的大小?
- 26. 不知道它
- 27. 输入数组大小提示
- 28. MIPS:用户输入数组大小
- 29. 获取ImageView而不知道它
- 30. 动态分配 - 用户在运行前不知道数组大小的情况下输入元素
如果程序可以计算参数,那么它肯定可以创建一个长度的数组。 'new int [count]'。 – 2015-02-07 12:17:38
[在java中输入数组]可能的重复(http://stackoverflow.com/questions/28383042/entering-array-in-java) – Joe 2015-02-07 14:16:01
不要使用数组,你可以使用ArrayList来代替它,它可以记住和调整自己的大小。 – eckes 2015-02-07 18:14:43