动态数组长度

时间:2016-10-23 16:10:48

标签: java arrays dynamic

我需要创建一个程序,让用户输入一个十进制数字,然后将它存储在一个数组中。

我遇到的问题是,我应该让用户输入他想要的数字,并将它们存储在一个数组中。

每次用户输入后,程序将询问用户是否要添加另一个十进制数字。如何使数组大小为用户输入的数字量?

这是我到目前为止所得到的:

import java.util.Scanner;

public class Uppgift4 {

    public static void main(String[] args) {
        float[] array = new float[1000];

        Scanner scanner = new Scanner(System.in);

        int counter= 0;

        int val;

        float inTal = 0;

        boolean loop = true;

        while(loop){
            System.out.print("Skriv in ett decimaltal: ");
            inTal = scanner.nextFloat();
            array[counter] = inTal;
            counter++;


            System.out.print("Vill du skriva in ett till tal? ja=1 nej=2 : ");
            val = scanner.nextInt();

            if(val == 2)
                loop = false;
        }

        for(int i = 0; i<=array.length; i++){
            System.out.println(array[i]);
        }

    }

}

但正如您所看到的,程序会输出很多0,因为很多数组可能都是空的。 (我的一些变量名是瑞典语)

2 个答案:

答案 0 :(得分:1)

您可以使用ArrayList

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

Scanner in = new Scanner(System.in);
ArrayList<Double> arr = new ArrayList<Double>();

while (in.hasNextDouble()) {
    arr.add(in.nextDouble());

    System.out.println("Continue? y = 1, n = 2");
    if (in.hasNextInt() && in.nextInt() == 2) // assumes any non-2 answer is "Yes"
        break;
}

为了简洁起见,我省略了用户交互代码。

另外,我使用Double代替float s,因为Double具有更高的精确度。

答案 1 :(得分:0)

您可以询问用户在创建阵列之前要输入多少个数字。将此值存储在int变量中,然后创建该大小的数组。这样,用户可以输入他们想要的值的数量。

这样做的缺点是,如果用户改变主意,事实上除了创建新数组之外,还没有真正改变数组大小的方法。因此,如果您希望代码无论如何都可以工作,那么您可以使用ArrayList。