2012-05-10 1 views
1

Goodday tout le monde,Le type de l'expression doit être un type tableau, mais il a décidé de « température » -java

Je fait une température de classe, qui a un constructeur pour rendre la température. La température est un arraylist de 2 nombres [froideur, hotness].

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; 
     } 

et maintenant je veux aller dans une autre classe et utiliser cet objet Température pour faire quelques calculs. Voici le code pour cela.

//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]); 
    } 

maintenant je reçois l'erreur: Le type de l'expression doit être un type tableau mais résolu à « température »

des solutions?

Je suis tout à fait nouveau pour Java, il est probablement juste quelques erreurs de synthaxe, mais je ne peux pas le trouver.

merci d'avance. David

+0

S'il y a une erreur, s'il vous plaît poster la trace de la pile de l'exception ou une erreur s'il vous plaît. – Crazenezz

Répondre

1

Au lieu de

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

essayer

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

Notez que le temperature dans votre deuxième extrait est de type Temperature qui a lui-même un int-tableau appelé temperature. Pour accéder à l'objet temperature de l'objet Temperature, vous devez faire temperature.temperature.


Comme @Marko Topolnik indique, vous pouvez également modifier

public int[] temperature; 

à

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

pour faire de la place pour les deux valeurs de température.

+0

Vous pouvez également l'aviser qu'il a besoin de init le tableau (c'est sa prochaine erreur), ou ne pas utiliser le tableau du tout :) –

+0

Hehe .. bon point :-) – aioobe

0

tempeture est de type Tempeture qui ne soit pas un tableau. Ce que vous voulez, c'est le membre du groupe temperature dans votre instance d'objet (que vous avez également appelé tempature).

changer Quoi qu'il en soit ligne:

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

Avec:

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

Je vous conseille d'utiliser des accesseurs et utiliser aussi le nom que vous confondez l'habitude.

0

Vous mélangez des variables ici.

Dans votre bloc de code ci-dessous, temperature fait référence à une instance de votre classe Temperature, mais vous suppose qu'il se réfère au tableau de température, qui est membre de la classe Temperature.

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

d'abord créer getter & méthodes setter dans la classe de température, puis appelez temperature.getTempertature() et l'utiliser sur la deuxième classe.

+0

J'ai changé les choses que vous avez suggéré, merci tout fonctionne très bien maintenant !! Je donnerais plus de V vert mais je ne peux en donner qu'un: p –

0

Eh bien, votre problème est ici

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

Vous utilisez un objet comme un tableau. C'est faux. À la place, utilisez une méthode GET et set à partir de laquelle vous définissez et obtenez la température. Ne rendez pas toutes vos données publiques, c'est très mauvais pour la programmation OO. Utilisez ces getters et setters. Somthing comme: if(temperature.getTemperature()==0) etc.

PS: Ne pas oublier de intialize objets avec nouvel opérateur (Temperature temperature = new Temperature(10,30);)

Questions connexes