是否可以初始化数组,然后使用getter方法将其返回?

问题描述 投票:-2回答:1

我正在初始化数组:

        double [] fahrenSumTemp = {73.2, 81.5, 75.4, 78.2, 71.9, 72.6};
        double [] fahrenWinTemp = {53.2, 50.3, 51.2, 54.1, 52.8, 51.9};
  }

然后,我使用等式将数组从华氏温度更改为摄氏温度:

    for (int i = 0; i < fahrenSumTemp.length; i++){
        double [] celsiusSumTemp =  {};
        celsiusSumTemp [i] = fahrenSumTemp[i] * (9/5) + 32;
    }
    for (int i = 0; i < fahrenWinTemp.length; i++){
        double [] celsiusWinTemp =  {};
        celsiusWinTemp[i] = fahrenWinTemp[i] * (9/5) + 32;
    }
  }

然后我想使用getter方法返回数组fahrenSumTemp,fahrenSumTemp,celsiusSumTemp,celsiusWinTemp中的值:

public double getFahrenSumTemp(double [] fahrenSumTemp){
        return fahrenSumTemp;
    }
  public double getCelsiusSumTemp(double [] celsiusSumTemp){
        return celsiusSumTemp[i];
    }
  public double getFahrenWinTemp(double [] fahrenWinTemp){
        return fahrenWinTemp;
    }
  public double getCelsiusWinTemp(double [] celsiusWinTemp){
        return celsiusWinTemp[i];
    }

但是存在错误,因为该方法找不到数组,但是我认为使用getter方法可以找到它?错误是:不兼容的类型double []无法转换为double

java arrays methods getter-setter getter
1个回答
0
投票

看来您想要执行以下操作:

import java.util.Arrays;

public class Main {
    double[] fahrenSumTemp = { 73.2, 81.5, 75.4, 78.2, 71.9, 72.6 };
    double[] fahrenWinTemp = { 53.2, 50.3, 51.2, 54.1, 52.8, 51.9 };
    double[] celsiusSumTemp = new double[fahrenSumTemp.length];
    double[] celsiusWinTemp = new double[fahrenWinTemp.length];

    public double[] getFahrenSumTemp() {
        return fahrenSumTemp;
    }

    public double[] getFahrenWinTemp() {
        return fahrenWinTemp;
    }

    public double[] getCelsiusSumTemp() {
        return celsiusSumTemp;
    }

    public double[] getCelsiusWinTemp() {
        return celsiusWinTemp;
    }

    private void initCelsiusTemps() {
        for (int i = 0; i < fahrenSumTemp.length; i++) {
            celsiusSumTemp[i] = fahrenSumTemp[i] * (9 / 5) + 32;
        }
        for (int i = 0; i < fahrenWinTemp.length; i++) {
            celsiusWinTemp[i] = fahrenWinTemp[i] * (9 / 5) + 32;
        }
    }

    public static void main(String[] args) {
        Main test = new Main();
        test.initCelsiusTemps();
        System.out.println(Arrays.toString(test.getFahrenSumTemp()));
        System.out.println(Arrays.toString(test.getFahrenWinTemp()));
        System.out.println(Arrays.toString(test.getCelsiusSumTemp()));
        System.out.println(Arrays.toString(test.getCelsiusWinTemp()));
    }
}

输出:

[73.2, 81.5, 75.4, 78.2, 71.9, 72.6]
[53.2, 50.3, 51.2, 54.1, 52.8, 51.9]
[105.2, 113.5, 107.4, 110.2, 103.9, 104.6]
[85.2, 82.3, 83.2, 86.1, 84.8, 83.9]

0
投票

我相信,您共享的代码段中存在一些错误。

  1. 为什么您的getMethod有参数?像getFahrenSumTemp()之类的方法应该只是返回值,而不是在参数中传递值然后返回它们。就语法而言,这是正确的,但是在概念上是错误的。

  2. getCelsiusSumTemp()和getCelsiusWinTemp()方法仅返回索引i处的特定值。由于这些是方法,因此“ i”在哪里定义? i的值是多少?我实际上没有在这些方法中定义,因此它本身应该在其中引发编译错误。

  3. celsiusSumTemp和celsiusWinTemp数组在for循环范围内定义。因此,它们的作用域仅限于循环,如果您试图在循环之外访问它们,则会出现错误提示,找不到数组。

  4. celsiusWinTemp和celsiusSumTemp都在带有空值的循环内部声明。当您执行类似double [] arrname = {}的操作时,数组的大小将定义为0,并且您将无法添加超出数组大小的项目。因此,当您试图向这些数组添加值时,代码将返回错误提示arrayIndexOutOfBounds。

仅显示出来,可能这就是您想要做的。

    public static void main(String[] args) {

        double [] fahrenSumTemp = {73.2, 81.5, 75.4, 78.2, 71.9, 72.6};
        double [] fahrenWinTemp = {53.2, 50.3, 51.2, 54.1, 52.8, 51.9};

        double [] celsiusSumTemp =  new double[fahrenSumTemp.length];
        double [] celsiusWinTemp =  new double[fahrenWinTemp.length];

        for (int i = 0; i < fahrenSumTemp.length; i++){

            celsiusSumTemp [i] = fahrenSumTemp[i] * (9/5) + 32;
        }
        for (int i = 0; i < fahrenWinTemp.length; i++){

            celsiusWinTemp[i] = fahrenWinTemp[i] * (9/5) + 32;
        }



    }
}
© www.soinside.com 2019 - 2024. All rights reserved.