2016-05-17 23 views
-2

Betrachten Sie die folgenden zwei Java-Klassen, die im selben Paket deklariert sind: Warum wird die CircleTest-Klasse nicht kompiliert und welche Änderungen können vorgenommen werden, damit die Änderungen funktionieren? Bitte hilf mir, danke :).Warum diese CircleTest-Klasse nicht kompiliert wird

Die Fehler beim Kompilieren sind: es heißt, die CircleTest-Klasse muss eine eigene Datei definiert werden, circumf ist nicht aufgelöst ist kein Feld, Circle.rad ist nicht sichtbar und PI wird nicht in eine Variable aufgelöst.

public class Circle { 
    private double rad; 
    static int count; 
    public Circle(double radius) { 
     this.rad = radius; 
     count++; 
    } 
    double circumf() { return 2 * PI * rad; } 
} 
public class CircleTest { 
    public static void main(String[] args) { 
     Circle diskA = new Circle(5); 
     Circle diskB = new Circle(3); 
     Circle diskC = diskA; 
     System.out.println("Circum A:" + diskA.circumf); 
     System.out.println("Area B:" + PI*diskB.rad*diskB.rad); 
    } 
} 
+0

Vermutlich haben Sie Kompilierungsfehler - bitte posten Sie sie und erklären Sie, was Sie über sie nicht verstehen. –

+0

(Ich kann mindestens drei Fehler sehen, aber ich würde erwarten, dass sie aufgrund der Fehlermeldungen offensichtlich sind ...) –

+0

gibt es mehrere Fehler. Sie greifen auf "circumf" wie eine Variable zu, aber es ist eine Methode. 'PI' ist eine nicht existierende Variable. 'rad' ist privat, aber direkt zugänglich. – SomeJavaGuy

Antwort

2

Erstes Problem:

rad ist private Sie nicht in der Lage sein, es Klasse von Ihrem Test zuzugreifen. Lesen Sie über access modifier.

Ändern Sie es in etwas wie: ;

oder besser noch, es privat verlassen und eine Getter-Methode verwenden:

private double rad; 

public double getRad() { 
    return rad; 
} 

Zweites Problem:

System.out.println("Circum A:" + diskA.circumf); 

Sie versuchen, eine Methode aufrufen, so sollte dies sein:

System.out.println("Circum A:" + diskA.circumf()); 

Drittes Problem em:

Fügen Sie static import hinzu, um PI zu verwenden.

import static java.lang.Math.PI; 

Viertes Problem:

Als @ kevin-esche erwähnt:

Seit CircleTest ist public es in einer Datei CircleTest.java, um kompilieren zu können, benannt sein muss. Oder entfernen Sie den public Identifikator.

+0

eine Sache fehlt, da 'CircleTest' öffentlich ist, muss es in einer Datei namens' CircleTest.java' stehen, um kompilieren zu können. Oder entfernen Sie den öffentlichen Identifikator. – SomeJavaGuy

+0

Sie haben Recht. Verpasste diesen einen. Ich füge es sofort hinzu. Vielen Dank. – Diyarbakir

+0

@Diyarbakir KevinEsche wow, vielen Dank Jungs, es macht Sinn für mich jetzt :). –

Verwandte Themen