In Java können Methoden nicht direkt in Methoden deklariert werden.
Das ist also kein gültiger Code:
public void foo() {
//...
public void bar() {
//...
}
}
Daher bekommst du auch beim kompilieren die Fehlermeldung illegal start of expression
.
Richtig dagegen ist:
public void foo() {
//...
}
public void bar() {
//...
}
Mit
int example;{
//...
}
bzw. int example;
deklarierst du eine neue Variable keine Methode, die {}
sind hier daher unnötig und werden vom Compiler ignoriert, deswegen tritt hier auch keine Fehlermeldung mehr auf.
Ich habe dir einmal zur Verdeutlichung Kommentare an den Klammern und Methoden geschrieben.
Code:
public class Excep {
// 1. Methode
public static void main(String[] args) throws Exception {
float zahl;
try {
zahl = Integer.parseInt(args[0]);
if (zahl > 10) {
throw new Exception("Zahl darf nicht größer als 10 sein!");
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Bitte gib ein Argument!");
zahl = 2;
e.printStackTrace();
} catch (NumberFormatException f) {
System.out.println("bitte gib eine Zahl ein!");
zahl = 3;
f.printStackTrace();
}
System.out.println("Deine Zahl: " + zahl);
int twentyBy;
System.out.println("Der Quotient mit 20: "+ 20/zahl);
} // schließende Klammer der 1. Methode
// Hier muss die 2. Methode hin
public int example(){
//...
} // schließende Klammer der 2. Methode
} // schließende Klammer der Klasse