1

大家晚安,

所以我做了一个温度类,它有一个构造函数来制作温度。温度是 2 个数字 [冷、热] 的数组列表。

    public int hotness;
public int coldness;
public int[] temperature;
public int maxTemperature = 10000;


//Constructor Temperature
public Temperature(int hotness, int coldness) {
    /**
     * A constructor for the Array Temperature
     */
    maxTemperature = getMaxTemperature();
        if(hotness <= maxTemperature && coldness <= maxTemperature)
        temperature[0] = coldness;
        temperature[1] = hotness;
        }

现在我想进入另一个类并使用该对象温度进行一些计算。这是它的代码。

    //Variabels

public int volatility;
private static Temperature temperature;
private static int intrensicExplosivity;

    public static int standardVolatility(){
    if(temperature[0] == 0){
        int standardVolatility = 100 * intrensicExplosivity * (0.10 * temperature[1]);
    }

所以现在我得到了错误:表达式的类型必须是数组类型,但它解析为“温度”

任何解决方案?

我对 Java 很陌生,所以可能只是一些语法错误,但我就是找不到。

提前致谢。大卫

4

5 回答 5

1

首先在 Temperature 类中创建 getter 和 setter 方法,然后调用 temperature.getTempertature() 并在第二个类中使用它。

于 2012-05-10T07:44:38.470 回答
1

代替

public static int standardVolatility() {
    if(temperature[0] == 0) {

尝试

public static int standardVolatility() {
    if(tepmerature.temperature[0] == 0) {
       ^^^^^^^^^^^^

请注意,temperature您的第二个片段中的类型Temperature本身具有一个名为temperature. 要访问对象的temperature-array Temperature,您必须执行temperature.temperature.


正如@Marko Topolnik 指出的那样,您可能还想改变

public int[] temperature;

public int[] temperature = new int[2];

以便为两个温度值腾出空间。

于 2012-05-10T07:39:33.923 回答
0

tempetureTempeture是不是数组的类型。您想要的是temperature对象实例(也称为tempature)中的数组成员。

无论如何改变线:

if(temperature[0] == 0) 
.
.

和 :

if(temperature.tempature[0] == 0)
.
.

我建议您使用 getter 和 setter,并使用不会让您感到困惑的名称。

于 2012-05-10T07:39:51.717 回答
0

你在这里混合了一些变量。

在下面的代码块中,temperature指的是您的Temperature类的一个实例,但您假设它指的是温度数组,它是Temperature该类的成员。

public static int standardVolatility() {
    if(temperature.temperature[0] == 0){
        int standardVolatility = 100 * intrensicExplosivity * (0.10 * temperature[1]);
    }
于 2012-05-10T07:41:00.297 回答
0

嗯,你的问题就在这里

private static Temperature temperature;
if(temperature[0] == 0){
        int standardVolatility = 100 * intrensicExplosivity * (0.10 * temperature[1]);
}

您正在使用一个对象作为数组。那是错误的。相反,请使用 GET 和 set 方法来设置和获取温度。不要公开所有数据,这对 OO 编程非常不利。使用那些 getter 和 setter。像:if(temperature.getTemperature()==0) etc.

PS:别忘了用 new 操作符 ( Temperature temperature = new Temperature(10,30);)初始化对象

于 2012-05-10T07:47:24.940 回答