java - 动态数组长度

标签 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,因为数组的很多部分可能是空的。 (我的一些变量名称是瑞典语)

最佳答案

您可以只使用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 ,因为 Double 具有更高的精度。

关于java - 动态数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40204960/

相关文章:

java - 如何将不同维度的数组输入到java中的方法中

MySQL 动态 ORDER BY

java - 如何在两个不同的 Swing 窗口之间共享方法?

java - 如何使用java获取具有选项值的特定子字符串

c++ - 如何从函数返回数组?

javascript - 创建 JSON 格式

java.security.AccessControlException 如何获得完全权限?

java - Selenium 测试未按预期运行

Javascript:动态向对象添加函数

Android - 动态更改布局的保存状态