Frage zu Java-Beispiel

  • Hallo,

    bräuchte eure Hilfe bei einer Programmieraufgabe. Es geht darum Rechenoperationen(+,-,*,x) mit zwei- bzw. dreidimensionalen Vektoren durchzuführen - je nach Wahl des Users.

    ich habe das wie folgt gecoded:

    public static void main(String[] args) {
    Scanner sc = new Scanner (System.in);


    System.out.println("Bitte geben sie einen zwei- oder dreidimensionalen Vektor ein: ");
    String eingabe1 = sc.nextLine();
    eingabe1 = eingabe1.trim();
    String vektor1 [] = eingabe1.split (" ");

    int zahl1 = Integer.parseInt(vektor1[0]);
    int zahl2 = Integer.parseInt(vektor1[1]);
    if (vektor1.length==3) {int zahl5 = Integer.parseInt(vektor1[2]);}

    /* falls Vektor 3 Dimensionen besitzt, soll die z-Koordinate ebenfalls
    geparsed werden*/

    System.out.println("Bitte geben sie einen zweiten zwei- oder dreidimensionalen Vektor ein: ");
    String eingabe2 = sc.nextLine();
    eingabe2 = eingabe2.trim();
    String vektor2 [] = eingabe2.split (" ");


    int zahl3 = Integer.parseInt(vektor2[0]);
    int zahl4 = Integer.parseInt(vektor2[1]);
    if (vektor2.length==3) {int zahl6 = Integer.parseInt(vektor2[2]);}

    /* falls Vektor 3 Dimensionen besitzt,soll die z-Koordinate ebenfalls
    geparsed werden*/

    System.out.println("Bitte wählen sie eine Rechenart aus: " +
    " (1)Addition" +
    " (2)Subtraktion" +
    " (3)Skalarprodukt" +
    " (4)Kreuzprdoukt;" );

    int eingabe5 = sc.nextInt();

    switch (eingabe5) {
    case 1: if (vektor1.length ==3 && vektor2.length == vektor1.length) System.out.println("Das Ergebnis ist " + (zahl1+zahl3) + " " + (zahl2 + zahl4) + " " + (zahl5+zahl6) + ".");

    else System.out.println("Das Ergebnis ist " + (zahl1+zahl3) + " " + (zahl2 + zahl4) + ".");break;

    case 2: if (vektor1.length ==3 && vektor2.length == vektor1.length) System.out.println("Das Ergebnis ist " + (zahl1-zahl3) + " " + (zahl2 - zahl4) + " " + (zahl5-zahl6) + ".");

    else
    System.out.println("Das Ergebnis ist " + (zahl1-zahl3) + " " + (zahl2 - zahl4) + ".");break;

    case 3: if (vektor1.length ==3 && vektor2.length == vektor1.length) System.out.println("Das Ergebnis ist " + (zahl1*zahl3+zahl2*zahl4+zahl5*zahl6) + ".");

    else System.out.println("Das Ergebnis ist " + (zahl1*zahl3+zahl2*zahl4) + ".");break;

    case 4: if (vektor1.length ==3 && vektor2.length == vektor1.length) System.out.println("Das Ergebnis ist " + (zahl2*zahl6-zahl5*zahl4) + " " + (zahl5*zahl3-zahl1*zahl6) + " " + (zahl1*zahl4-zahl2*zahl3) + ".");

    else System.out.println("Das Kreuzprodukt ist nur im dreidimensionalen Raum generierbar.");
    }


    }
    }

    Beim Ausführen des Programms erzeugt der Compiler im dreidimensionalen Fall einen Laufzeitfehler, weil er die Zahl 5 bzw. Zahl 6 nicht erkennt. Kann mir vielleicht wer auf die Sprünge helfen, wo da der Hund begraben liegt und wie ich dieses Problem lösen kann??

    Vielen Dank schon mal im Voraus,
    cheers
    alex

  • Die Sichtbarkeit von lokalen Variablen ist auf den Block ihrer Definitionszeile beschränkt. Folgender Code schlägt fehl:

    Code
    if (vektor1.length==3) {int zahl5 = Integer.parseInt(vektor1[2]);} System.out.println(zahl5);

    Folgender Code funktioniert:

    Code
    int zahl5; if (vektor1.length==3) {zahl5 = Integer.parseInt(vektor1[2]);} System.out.println(zahl5);

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!