在下面的代码中,我标记了不起作用的行。 有人可以解释一下为什么这不起作用吗?
import java.util.Scanner;
public class ArrayLength {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("Please enter the array : ");
double[] userArray = myScanner.nextDouble();//This line doesn't work
}
}
答案 0 :(得分:0)
您必须在int
中定义数组索引,然后才能获得double
输入
public class Example {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//Decide array length
System.out.print("Please enter the array : ");
int num = Integer.parseInt(scan.nextLine());
//Create a double array to store values
double userArray[] = new double[num];
for (int i = 0; i < userArray.length; i++) {
System.out.print("Enter value " + (i + 1) + " : ");
userArray[i] = scan.nextDouble(); // you can store input with double datatype now
}
//Now display one by one
for (int i = 0; i < userArray.length; i++) {
System.out.print("Value are " + (i + 1) + " : ");
System.out.print(userArray[i] + "\n");
}
}
}
如果您不希望将输入作为数组
double num= myScanner.nextDouble();
答案 1 :(得分:0)
我猜你试图从行分隔的输入中设置一个双数组。如果是这样,你可以使用这样的东西:
Scanner myScanner = new Scanner(System.in);
System.out.println("Please enter the array : ");
String strScan = myScanner.nextLine();
String[] aScan = strScan.split(" ");
double[] userArray = new double[aScan.length];
int i = 0 ;
for (String str : aScan) {
userArray[i] = Double.parseDouble(str);
i++;
}
答案 2 :(得分:0)
如果您希望用户输入只位于一行,并且您确定所有值(由空格分隔)都可以解析为Double我建议使用以下语句:
double[] userArray = Arrays.stream(myScanner.nextLine().split(" "))
.mapToDouble(Double::parseDouble)
.toArray();
将整个下一行作为字符串读取,用空格分割,然后将每个值解析为double。
如果您只需要读取一个double值并且需要将它存储到一个数组中,那么您可以像这样简单地使用Array Initializer:
double[] userArray = {myScanner.nextDouble()};
这样userArray总共有1个元素,它是第一个,唯一的值就是用户输入。
答案 3 :(得分:0)
myScanner.nextDouble()将输出一个double而不是double数组。因此,您需要将该double设置为等于数组中的特定索引,而不是尝试将整个数组设置为等于单个double。如果你想在阵列中接受多个双打,我建议使用for循环。
例如:
for(int x = 0; x < userArray.length; x++)
{
userArray[x] = myScanner.nextDouble(); // x in this scenario is a specific position in the array
}
此外,如果用户输入格式化为每个双倍之间的空格(即1.0 2.0 3.0 4.0等)myScanner.nextDouble();将取第一个双倍,然后再次通过for循环并取下一个双倍等。这很有用,因为用户输入都可以在一行上,所以用户可以一次输入整个数组。