2012-05-10 59 views
1

Goodday大家,類型表達的必須是一個數組類型,但它解析爲「溫度」 -Java

所以,我提出的一類的溫度,這有一個構造,使溫度。溫度是一個由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很新,所以可能只是一些synthax錯誤,但我找不到它。

在此先感謝。 大衛

+0

對象如果有錯誤,請張貼異常或錯誤,請的堆棧跟蹤。 – Crazenezz

回答

1

而不是

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

嘗試

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

注意,在你的第二個片段的temperatureTemperature其本身具有一個int數組稱爲temperature類型。要訪問temperature-Temperature對象的數組,您必須執行temperature.temperature


由於@Marko Topolnik所指出的,你也可能要改變

public int[] temperature; 

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

,以騰出空間給這兩個溫度值。

+0

你也可以建議他需要初始化數組(這是他的下一個錯誤),或者根本不使用數組:) –

+0

呵呵..好點:-) – aioobe

0

tempetureTempeture這不是一個數組。 你想要的是你的對象實例中的陣列成員temperature(你也叫做tempature)。

無論如何改變行:

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

有了:

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

我勸你使用getter和setter方法,還可以使用該名稱不會迷惑你。

0

這裏混合了一些變量。

在您的代碼塊中,temperature指的是您的Temperature類的一個實例,但您認爲它指的是溫度數組,它是Temperature類的成員。

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

首先創建吸氣& setter方法進入溫度等級,然後調用temperature.getTempertature()和使用它的第二類。

+0

我改變了你們建議的東西,謝謝你的一切現在作品非常棒!我會給更多的綠色V,但只能有一個:P –

0

那麼,你的問題是在這裏

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

您正在使用的對象數組。這是錯誤的。 取而代之,使用GET和set方法從中設置並獲取溫度。 不要公開你所有的數據,這對於OO編程來說是非常糟糕的。使用這些獲得者和設置者。 財產以後這樣的:if(temperature.getTemperature()==0) etc.

PS:不要忘記並初始化與新的運營商(Temperature temperature = new Temperature(10,30);

相關問題