2017-10-12 113 views
-4

我想弄清楚如何動態地創建一個用戶輸入數組。我知道如何初始化一個數組,但我不知道如何讓用戶初始化一個數組。這裏是我到目前爲止有:動態創建一個整數數組

import java.util.ArrayList; 
import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 


     System.out.print("Enter the size of the array (3 to 10): "); 
     Scanner user_input = new Scanner(System.in); 
     int size_of_array = user_input.nextInt(); 
     while(size_of_array < 3 || size_of_array > 10) { 
      System.out.println("The size of the array entered is invalid."); 
      System.out.print("\nEnter the size of the array (3 to 10): "); 
      user_input = new Scanner(System.in); 
      size_of_array = user_input.nextInt(); 
     } 
     ArrayList array = new ArrayList(size_of_array); 
     System.out.println("Initial size of array: " + array.size()); 



    } 

} 

我想ArrayList array = new ArrayList(size_of_array);打算做的伎倆,但數組的大小仍然是0。希望有人能幫助我。提前致謝。

+0

如果你正在尋找使用一個數組,你爲什麼要創建一個ArrayList ?使用數組,你可以使用用戶輸入在開始時設置它的大小 - int [] arr = new int [size_of_array]' –

+0

我想數組列表更容易處理,因爲它是動態的,但它好像是一個數組列表不是我在找什麼......新手在這裏 – Stephan

回答

0

根據你的問題,如果要創建動態大小的數組,然後使用

int array[]=new int[size_of_array]; 

如果創建的ArrayList那麼它已經是一個動態的大小無需指定的大小。

ArrayList<Integer> array = new ArrayList<>(size_of_array); 

如果你這樣做,那麼你正在定義ArrayList的容量,它是當初始容量已滿時自動增加的容量。

,當你在你的列表中添加元素,如

array.add(45); 

那麼它的尺寸增加,這不是告訴你0

1

數組列表的大小是動態的,因此您無需爲其指定大小。當您最初創建列表,大小爲0。要創建列表,你要做的就是:

//Make sure you define the type of data you want to store in your list 
ArrayList<String> myList = new ArrayList<String>(); 
myList.add("Your String"); 
myList.size(); //returns a value of 1 

如果不增加它的任何元素,則規模將保持在0之後你添加一個元素,你可以調用size()方法。

如果你想使用一個數組,你需要允許用戶設置變量的大小,做這樣的事情:

user_input = new Scanner(System.in); 
size_of_array = user_input.nextInt(); 
String[] stringArray = new String[size_of_array]; 
+0

如果它不是一個數組列表呢?如果它只是一個數組呢? – Stephan

+0

如果它不是數組列表,那麼您需要定義大小。如果你不知道尺寸是什麼,我建議使用'ArrayList' – BlackHatSamurai

+0

如何讓用戶定義尺寸? – Stephan

0

您可以指定大小ArrayList這是Collections一部分這樣的

List<X> list = Arrays.asList(new X[desiredSize]); 
// where X is any Object type (including arrays and enums, 
// but excluding primitives) 

結果列表是可以修改的,但不能調整大小(即​​和remove(e)不工作,但set(index, e)一樣)。