有沒有辦法在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