我需要编写一个程序,让用户输入一个十进制数,并将其存储在一个数组中。
我遇到的问题是,我应该让用户输入他想要的数字,并且所有数字都将存储在一个数组中。
每次用户输入后,程序都会询问用户是否要添加另一个十进制数字。如何使数组大小等于用户输入的数字数量?
这是我到目前为止所得到的:
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/