2009-03-10 8 views
2

J'ai créé une petite application Java pour tester automatiquement certaines expressions pour une condition vrai/faux.Impossible de trouver le symbole

Je reçois deux erreurs du compilateur dans les deux jGRASP et avec la commande javac.

Le code suivant:

public class MathTest { 
    public static void main(String[] args) { 

     int x = 10; 
     int y = 20; 
     int z = 30; 
     String string1 = "six"; 
     String string2 = "six"; 

     if (x < 10 || x > 10) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (z - y == x && Math.abs(y - z) == z) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (x < 10 && x < 10) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (string1.equals(string2)) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 
     if (x > y || y > x) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (!(x < y + z) || !(x + 10 <= 20)) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

     if (string1 == string2) 
      System.out.print("True"); 
     else 
      System.out.print("False"); 

    } 
} 

Le message d'erreur est:

 
    MathTest.java:14: cannot find symbol 
    symbol : method abs(int) 
    location: class Math 
    if(z - y == x && Math.abs(y - z) == z) 
        ^
    ./Math.java:13: cannot find symbol 
    symbol : method abs(int) 
    location: class Math 
    if(z - y == x && Math.abs(y - z) == z) 
        ^
    2 errors 

Qu'est-ce que je fais mal?

Dans le cas peu probable que mon instructeur ou tout administrateur de Salt Lake Community College vient jamais à travers cette question, permettez-moi de faire mes intentions. Cette question est affichée dans le plus grand esprit d'honnêteté académique. Je pose cette question pour obtenir des conseils généraux et aider à comprendre la bonne façon d'utiliser le langage de programmation Java. Je n'utilise en aucun cas le travail des autres et le représente comme mon propre travail. J'utilise les réponses fournies ici comme une aide générale à ma compréhension. Je fais tout mon travail et ne copie pas le travail fourni par les personnes répondant à ma question.

+0

D'une manière générale, il est toujours préférable d'utiliser des supports plutôt que de ne pas les utiliser.Préférez if() {...} else {...} sur if() .. else ... – OscarRyz

Répondre

5

Si vous voulez que votre programme à utiliser Math.abs Java (au lieu d'une méthode abs() dans la classe Math vous avez écrit), vous pouvez dire:

if(z - y == x && java.lang.Math.abs(y - z) == z) 

... qui est pas très joli. En général, essayez de ne pas nommer vos classes de la même façon que java.lang (ou java.anything, vraiment).

+0

J'avais l'intention d'utiliser la classe Math intégrée dans java.lang. Je crois que j'ai appelé accidentellement une classe que je n'ai pas faite au lieu d'appeler java.lang.Math. Quand j'ai fait le changement, les erreurs ont disparu. Je vous remercie. –

6

Vous avez une classe Math et vous essayez d'utiliser la méthode abs().

La question est: Est-ce votre intention de fournir cette fonction ou vous essayez d'utiliser celui java.lang.Math? Pour la première fois, vous devez vous assurer que vous déclarez cette fonction.

Pour la seconde vous devez vous assurer que vous utilisez les types de paramètres corrects; voir Math.

Est-ce que votre classe Math possède la méthode abs?

Il semble que votre classe de mathématiques observe la classe de mathématiques qui se trouve au cœur de la langue.

Votre classe Math est chargé et la méthode abs n'a pu être trouvée (d'où le message « Vous ne trouvez pas le symbole »)

+0

J'avais l'intention d'utiliser la classe Math intégrée à java.lang. –

3

Dans votre sortie du compilateur, vous avez:

./Math.java:13: cannot find symbol 

On dirait que vous Essayez d'écrire votre propre classe Math, et il ombrage java.lang.Math, qui est intégré.

Avez-vous d'avoir une classe de votre propre appelé Math? Si ce n'est pas le cas, supprimez simplement Math.java et essayez de compiler à nouveau. Si vous faites besoin Math.java, essayez de le renommer en quelque chose d'autre (comme, par exemple, avec MyMath.javapublic class MyMath défini à l'intérieur).

+0

Je ne voulais pas créer ma propre classe de mathématiques. Lorsque j'ai utilisé le nom de classe complet, l'erreur a disparu. –

+0

Nice. Dunno où ça devient Math.java alors, mais bonne chance avec ton projet! – tgamblin

Questions connexes