Variablen Variable wird nicht gefunden

Oppi500

Mitglied
Hallo

Hab mich bei diesem forum gerade registriert, da ich eine Frage habe bei der ich die Antwort einfach nicht finde.

Also ich habe eine switch/case Struktur und wenn ich bei der eine boolean Funktion darumlege dann findet das Programm eine Variable in dieser switch/case struktur für eine folgende Berechnung nicht mehr.

Hoffe es ist halbwegs verständlich:

Hier mein Quellcode:

Java:
Scanner scan = new Scanner(System.in);

        boolean finish = false;

        while (!finish) {



            System.out.println("Programm zur Berechnung der maximalen Durchbiegung eines Trägers (Material: Stahl) \n \n");

            boolean profile = false;

            while (!profile) {

                System.out.println("Sie koennen aus den folgenden drei Querschnitten waehlen: \n (Q)uadratischer Querschnitt \n (K)reisförmiger Querschnitt \n (I)-Träger");
                char q = scan.next().charAt(0);


                double i = 0;
                double area = 0;

                switch (q) {

                    case 'Q':
                        System.out.println("Geben Sie die Querschnittsgroesse in mm ein!");
                        area = scan.nextDouble();
                        i = (Math.pow(area, 4)) / 12;
                        profile = true;
                        break;

                    case 'K':
                        System.out.println("Geben Sie die Querschnittsgroesse in mm ein!");
                        area = scan.nextDouble();
                        i = ((Math.pow(area, 4)) * Math.PI) / 4;
                        profile = true;
                        break;

                    case 'I':
                        System.out.println("Geben Sie die Querschnittsgroesse in mm ein!");
                        area = scan.nextDouble();
                        i = (10 * (Math.pow(area, 4))) / 144;
                        profile = true;
                        break;

                    default:
                        System.out.println("Falsche Eingabe, versuchen Sie es erneut!");
                        profile = false;

                }
            }
                // Abfrage nach Trägerart.

                boolean bar = false;

                while (!bar) {

                    System.out.println("Waehlen Sie nun zwischen folgenden Trägerarten:");
                    System.out.println("(B)eidseitig gelagert, Krafteinleitung mittig \n (K)ragträger mit Last am Endpunkt");
                    char t = scan.next().charAt(0);

                    double result = 0;
                    double lenght = 0;
                    double force = 0;
                    double material = 210;

                    switch (t) {

                        case 'B':
                            System.out.println("Geben Sie die Länge des Trägers in mm an!");
                            lenght = scan.nextDouble();
                            System.out.println("Geben Sie die auf den Träger wirkende Kraft in Newton an!");
                            force = scan.nextDouble();
                            result = (force * (Math.pow(lenght, 3))) / (48 * material * i);
                            System.out.println("Die maximale Durchbiegung in mm ist:" + result);
                            bar = true;
                            break;

                        case 'K':
                            System.out.println("Geben Sie die Länge des Trägers in mm an!");
                            lenght = scan.nextDouble();
                            System.out.println("Geben Sie die auf den Träger wirkende Kraft in Newton an!");
                            force = scan.nextDouble();
                            result = (force * (Math.pow(lenght, 3))) / (3 * material * i);
                            System.out.println("Die maximale Durchbiegung in mm ist:" + result);
                            bar = true;
                            break;

                        default:
                            System.out.println("Falsche Eingabe, versuchen Sie es erneut!");
                            bar = false;

                    }
                }
                boolean repeat = false;

                while (!repeat) {

                    System.out.println("Moechten Sie eine neue Berechnung starten? (Y/N)");

                    Scanner sc = new Scanner(System.in);
                    char c = sc.next().charAt(0);

                    if (c == 'y' || c == 'Y') {
                        finish = false;
                        break;

                    }
                    if (c == 'n' || c == 'N') {
                        finish = true;
                        repeat = true;

                    } else {
                        System.out.println("Falsche Eingabe!");
                        repeat = false;
                    }
                }

            }
        }
    }



dadurch das ich eben die boolean Funktion bei der ersten switch/case Struktur verwende findet das Programm die Variable ' i ' in der 93. und 103. zeile nicht mehr.

Lg Oppi.
 
Zuletzt bearbeitet:
tja, die Deklaration von i muss vor die erste Schleife, ist das nicht klar?
einfach diese Zeile verschieben

-----

und Vorsicht mit mehreren Scannern auf System.in (mindestens Zeile 1 und 100 hier im Forum),
ist das nötig?
Scanner lesen gerne je nach Verfügbarkeit auch mehrere Zeilen/ ganze Zeilen ein,
der zweite Scanner bekommt dann die übersprungenden Daten nicht mehr und ähnliche Scherze,

ein Scanner statisch global wie System.in definieren, nie riskieren das irgendwo je ein zweiter geöffnet wird
 

Neue Themen


Zurück
Oben