在数组中存储双精度浮点数

3

好的,我希望能够将值存储在数组中。这是我的代码:

import java.util.Scanner;
public class test {
    public static void main(String args[]){
        Scanner bob = new Scanner(System.in);

        double[] mylist;

        System.out.println("What is your first value?");
        mylist = bob.nextDouble();

        System.out.println("What is your second value?");
        mylist = bob.nextDouble();
    }
}

问题#1:有人告诉我mylist = bob.nextDouble()应该改为nextLine()。如果它显然是一个double,为什么要这样做?
目标:我想以某种方式把这些给定的值存储到数组中,以便稍后可以取出它们。有人能帮忙吗?
更新:
对于问题#1,它告诉我无法从Double()转换为Double[]。这是什么意思?
5个回答

5
错误是因为您正在尝试将双精度值分配给数组,具体操作如下所示:
    mylist = bob.nextDouble();

由于这里将mylist定义为一个数组:

    double[] mylist;

首先需要初始化你的数组:

    double[] mylist = new double[2]; // initialise array to have two elements

然后尝试像这样使用用户输入来分配数组元素:

    mylist[0] = bob.nextDouble();
    mylist[1] = bob.nextDouble();

3

这是一个数组(一种对象类型)。首先,创建一个足够大的数组来存储你的 double (而不是 int )并将值存储在适当的索引位置。例如:

Scanner bob = new Scanner(System.in);
double[] mylist = new double[2];
System.out.println("What is your first value?");
mylist[0] = bob.nextDouble();
System.out.println("What is your second value?");
mylist[1] = bob.nextDouble();
System.out.println(Arrays.toString(mylist));

1
为什么我需要放 = new double[2];?这意味着什么? - Code123
1
我们使用 new 创建对象的实例。在这种情况下,它是一个数组,我们正在创建一个可以容纳两个原始值的对象。另请参阅 JLS-10.4. 数组访问 - Elliott Frisch

3

数组不是double类型,你需要选择一个索引:

double[] arr = new double[2];
System.out.println("What is your first value?");
arr[0] = bob.nextDouble();

System.out.println("What is your second value?");
arr[1] = bob.nextDouble();

另外,不要将数组称为列表,使用CamelCase命名您的变量/方法/类,并初始化数组。我建议您阅读Java教程,了解该语言基础知识。

我已经这样做了,但现在它给我这个错误:本地变量mylist可能未被初始化。 - Code123
1
我把你的变量从 mylist 改名为 arr,因为它不是一个列表。不要复制粘贴代码,理解其逻辑并根据需要使用它 :) - Dici

3

mylist是一个double类型的数组,而不是单个的double

当你执行mylist = bob.nextDouble();时,你实际上是试图让整个数组等于一个数字。

相反,你需要将这个数字赋值给数组中的特定位置。

  1. Initialize the array with the amount of elements you are going to store in the array:

    double[] mylist = new double[2];
    
  2. Assign the double to a specific place in the array:

    mylist[0] = bob.nextDouble();
    mylist[1] = bob.nextDouble();
    

1
为什么在new double[2]中数字是2而不是1?难道计数不是从0开始的,就像mylist[0]一样吗? - Code123
1
@Code123 当你初始化数组时,你需要放入你想要的元素数量。你想要2个元素,而不是1个。第一个位置恰好是[0],第二个位置是[1],但当你计算位置数量时,你有2个。 - Tot Zam

0
最好使用带有泛型的列表。
List<Double> myList;

myList.add(bob.nextDouble());

那样,您可以将任意数量的双精度浮点数添加到列表中,这样您就不必担心索引。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接