2017-10-12 111 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)一样)。