java-code zeigt Fehler. ( ';',erwartet)
class B {
int x,y;
int z;
z=x*y;
void show() {
System.out.println(z);
}
}
class A {
public static void main(String as[]) {
B b=new B();
b.show();
}
}
Konnte Sie formatieren Sie den code richtig ein und drucken Sie die vollständige Fehlermeldung (inklusive Zeilennummer)?
haben Sie eine Frage?
wenn Sie irgendwie richtig sein (Konstruktor-Initialisierung-block), sollten Sie stark denken, die Logik, die dahinter steckt, weil, Sie haben x und y nicht initialisiert.
streng genommen, x und y initialisiert, den default-Wert null. Zum Glück gibt es keine solche Sache wie nicht initialisierten Variablen in Java. Natürlich, es macht immer noch wenig Sinn multiplizieren von zwei Nullen und speichern das Ergebnis in einem anderen Feld.
Tachenov: wenig Sinn oder keinen Sinn?
haben Sie eine Frage?
wenn Sie irgendwie richtig sein (Konstruktor-Initialisierung-block), sollten Sie stark denken, die Logik, die dahinter steckt, weil, Sie haben x und y nicht initialisiert.
streng genommen, x und y initialisiert, den default-Wert null. Zum Glück gibt es keine solche Sache wie nicht initialisierten Variablen in Java. Natürlich, es macht immer noch wenig Sinn multiplizieren von zwei Nullen und speichern das Ergebnis in einem anderen Feld.
Tachenov: wenig Sinn oder keinen Sinn?
InformationsquelleAutor kmme | 2011-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie keine Aussagen in der Klasse-Körper (
z=x*y;
). Sie haben (mindestens) zwei Möglichkeiten:int z = x * y;
verwenden Sie block-Initialisierer
Diese sind praktisch die gleichen. Ich würde die erste Möglichkeit bevorzugen (cleaner) Siehe hier
int z = x * y
).Ich zeigte den Feld-Initialisierer. Der Konstruktor ist auch eine option, aber nicht bevorzugt, wenn viele Konstruktoren sind wahrscheinlich zu existieren.
+1 für die Initialisierung von block.
gut, diese sind praktisch die gleichen 🙂 ich würde die erste Möglichkeit bevorzugen
Ich würde nicht Zustimmen und gehen Sie mit dem Konstruktor. Die Feld-Initialisierer ist praktisch ebenso gültig, aber da die Frage hier ist, fast sicher von einem Anfänger-Perspektive ist es, Konstruktoren, er sollte lernen über für diese Art der Sache, oder zumindest sollte er das lernen über Sie vor der Initialisierung blockiert!
InformationsquelleAutor Bozho
z=x*y;
Sie nicht hier. legte es in KonstruktorInformationsquelleAutor Sarwar Erfan
Ich denke, dass Ihr problem ist in diesen Zeilen:
Diese erste Zeile ist vollkommen in Ordnung - es wird eine Instanz der Klasse variable namens
z
Typint
. Diese zweite Linie, jedoch ist die Quelle Ihres Problems. In Java ist es illegal, code in einer Klasse außerhalb einer Methode der Klasse oder statischen Initialisierer. In diesem Fall wird die Anweisungz = x * y;
legal ist Java-code, sondern es werden innerhalb einer Methode.Dieses Problem zu beheben, verschieben Sie diesen code in Konstruktor oder einer anderen Methode.
InformationsquelleAutor templatetypedef
erwähnt, nicht innerhalb der Methode Körper. Das kannst du nicht tun. Bewegen Sie es an den Konstruktor oder einer anderen Methode.
Innerhalb der Klasse Körper und außerhalb Methode, die Körper, die Sie erwähnen können, nur Felder, Methoden und die innere Klasse Erklärungen.
InformationsquelleAutor Vladimir Ivanov