0 Daumen
428 Aufrufe

Hey ich schreibe einen Code und soll nun eine zweite Methode einbauen. Wenn ich:

  public int example(){
  //...
  }

bekomme ich die Fehlermeldung

illegal start of expression

wenn ich aber

    int example;{
  //...
  }


funktioniert es, nun aber die Frage ob das eine Methode ist?

Hier ist der gesamte Code

 public class excep {

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



Avatar von

1 Antwort

0 Daumen

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
Avatar von

Danke für die Hilfe, jedoch nimmt er nun für die zweite Methode den Kommandzeilenparameter nicht mehr an

Dafür kannst du Parameter benutzen public int example(int zahl), diese stehen in den () Klammern der Methode.

public void twentyBy(int zahl) {
System.out.println("Der Quotient mit 20: "+ 20/zahl);
}

Die Methode kannst du dann mit twentyBy(zahl); am Ende der main-Methode aufrufen.

 public static void main(String[] args) throws Exception {
//...
twentyBy(zahl);
}

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community