我需要创建一个程序,让用户输入一个十进制数字,然后将它存储在一个数组中。
我遇到的问题是,我应该让用户输入他想要的数字,并将它们存储在一个数组中。
每次用户输入后,程序将询问用户是否要添加另一个十进制数字。如何使数组大小为用户输入的数字量?
这是我到目前为止所得到的:
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,因为很多数组可能都是空的。 (我的一些变量名是瑞典语)
答案 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。