【问题标题】:Cannot convert double into double[][] error in java?java中无法将double转换为double [] []错误?
【发布时间】:2017-11-22 16:28:40
【问题描述】:

好的,所以我仍在为我的 APCS 课程做一个矩阵项目,我目前正在尝试弄清楚如何让用户输入矩阵的所有数字。现在我有一个 setNums 类,它使用已经输入的行和列来抛出一堆输入框,然后将这些数字输入到二维数组中,如下所示:

public void setNums(String Matrixnum){
    for (int i = 1; i <= myRows; i++){
        for(int j = 1; j <= myColumns; j++){
            String StrNum = JOptionPane.showInputDialog(null, Matrixnum + " Row " + i + " Column " + j + " enter number:");
            myNums[i][j] = Double.parseDouble(StrNum);
        }
    }
}

然后我有一个 getNums 类,它应该遍历数组并一个一个地返回它们,当我稍后需要这些数字来对矩阵进行加、减和乘时:

public double[][] getNums(){
    for(int i = 1; i <= myRows; i++) {
        for(int j = 1; j <= myColumns; j++) {
            return myNums[i][j];
        }
    }
}

问题是当我尝试返回 myNums 时,它显示“无法从 double 转换为 double[][]”我不明白为什么代码认为它是 double 而不是 double[][]。我正确初始化了它:

private double[][] myNums;

...我确保我的 parsedouble 正在输出到数组,这是我发现的类似线程中的问题。这是我第一次使用二维数组,所以我敢打赌这里有一些我不明白的简单的东西。任何帮助是极大的赞赏。谢谢!

【问题讨论】:

  • 您正在尝试返回 double,因为您正在返回 double[][] 的元素
  • public double[][] getNums(){ 如果要返回单个数字,则返回类型不应是数组:public double getNums(){
  • 您需要返回整个数组,而不是尝试返回数组的单个元素。所以删除2个for循环并返回return myNums;
  • 您似乎误解了数组的工作方式。 myNums[i][j] 是存储在索引 i 和 j 处的 double,而不是整个数组,即 myNums
  • 在其他新闻中,getNums() 方法无法按您想要的方式工作。它不会“一次一个”地返回数字。它返回位置myNums[1][1] 的第一个数字,然后退出。

标签: java arrays matrix


【解决方案1】:

编译器返回此错误Cannot convert double into double[][]

因为您实际上返回的是单个双精度数,而不是您定义为方法的返回类型 getNums() 的双精度数组 getNums()

相反,您可以通过仅返回 myNums 数组来解决问题:

public double[][] getNums(){
        return myNums;
}

如果您想使用数组索引ij 从数组中获取任何特定数字,还可以声明另一种方法:

public double getNumber(int i, int j){
        return myNums[i][j];
}

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2020-12-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多