2009-03-10 12 views
2

Ich habe eine kleine Java-Anwendung erstellt, um automatisch einige Ausdrücke auf eine Wahr/Falsch-Bedingung zu testen.Ich kann kein Symbol finden

Ich bekomme zwei Compiler-Fehler in beiden jGRASP und mit dem Befehl javac.

Der Code folgt:

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"); 

    } 
} 

Die Fehlermeldung lautet:

 
    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 

Was mache ich falsch?

In dem unwahrscheinlichen Fall, dass mein Lehrer oder irgendein Administrator vom Salt Lake Community College jemals auf diese Frage stößt, lassen Sie mich meine Absichten klarstellen. Diese Frage wird im größten Geist der akademischen Ehrlichkeit gepostet. Ich stelle diese Frage, um allgemeine Ratschläge und Hilfe beim Verständnis der richtigen Verwendung der Java-Programmiersprache zu erhalten. Ich benutze in keiner Weise die Arbeit anderer und stelle sie als meine eigene Arbeit dar. Ich verwende die hier gegebenen Antworten als allgemeine Hilfe für mein Verständnis. Ich mache all meine eigene Arbeit und kopiere nicht die Arbeit von Leuten, die meine Frage beantworten.

+0

Generell ist es immer besser, Brackets zu benutzen als sie nicht zu benutzen.Bevorzugt if() {...} else {...} über if() .. else ... – OscarRyz

Antwort

5

Wenn Sie Ihr Programm wollen Java Math.abs (anstelle eines abs() Methode in der Klasse Math Sie schrieb) zu verwenden, können Sie sagen:

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

... was nicht sehr ziemlich. Versuchen Sie im Allgemeinen, Ihre Klassen nicht mit denen in java.lang (oder java.anything, wirklich) zu benennen.

+0

Es war meine Absicht, die in java.lang eingebaute Math-Klasse zu verwenden. Ich glaube, ich habe versehentlich eine Klasse aufgerufen, die ich nicht gemacht habe, anstatt java.lang.Math aufzurufen. Als ich die Änderung machte, verschwanden die Fehler. Vielen Dank. –

6

Sie haben eine Math-Klasse und versuchen die Methode abs() zu verwenden.

Die Frage ist: Ist es Ihre Absicht, diese Funktion bereitzustellen oder versuchen Sie, die in java.lang.Math zu verwenden?

Für die erste müssen Sie sicherstellen, dass Sie diese Funktion deklarieren.

Für die zweite müssen Sie sicherstellen, dass Sie die richtigen Parametertypen verwenden; siehe Math.

Hat Ihre Math-Klasse die ABS-Methode?

Es scheint, als ob Ihre Math-Klasse die Math-Klasse abdeckt, die im Kern der Sprache steht.

Ihre Math-Klasse geladen und die abs-Methode konnte nicht gefunden werden (daher die Meldung „Kann nicht Symbol finden“)

+0

Es war meine Absicht, die in java.lang eingebaute Math-Klasse zu verwenden. –

3

In Ihrem Compiler-Ausgang, Sie haben:

./Math.java:13: cannot find symbol 

Es sieht aus wie Sie Versuchen Sie Ihre eigene Math Klasse zu schreiben, und es ist Shadowing java.lang.Math, die eingebaut ist.

Müssen Sie eine eigene Klasse namens Math haben? Wenn nicht, dann löschen Sie einfach Math.java und versuchen Sie es erneut zu kompilieren. Wenn Sie tun brauchen Math.java, dann versuchen Sie es umbenennen zu etwas anderem (wie, sagen wir, MyMath.java mit public class MyMath im Inneren definiert).

+0

Ich wollte nicht meine eigene Math-Klasse erstellen. Als ich den vollständig qualifizierten Klassennamen verwendete, verschwand der Fehler. –

+0

Schön. Dunno, wo es dann Math.java bekommt, aber viel Glück mit deinem Projekt! – tgamblin

Verwandte Themen