myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [Java] - Problem mit if und while Schleife (https://mygully.com/showthread.php?t=2137540)

Mint 10.10.10 21:20

[Java] - Problem mit if und while Schleife
 
Moin zusammen,
Hab zu übung mal ein sinnloses Programm zusammengecodet welches angibt an welcher Stelle der eingegebene Buchstabe im Alphabet zu finden ist. Das tut es auch, allerdings endlos.
Habe die Prozedur in der Klasse alphabet gekapselt:
Code:

public class alphabet {
   
     
    public static void test(char[]usrinput) {
       
        char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
       
        int i = 0;
        while (i<27)
            if (usrinput[0]==alphabet[i])
                System.out.println("Der eingegebene Buchstabe ist der "+(i+1)+". im Alphabet!");
                //break;
            else
                i++;
       
    }
}

Die test-Methode wird aus der main-klasse folgenderweise aufgerufen:
Code:

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        char[] usrinput;
        System.out.println("Bitte geben sie einen Buchstaben ein: ");
        usrinput = (input.readLine()).toCharArray();
        alphabet.test(usrinput);

Wenn die erste Prüfung erfüllt ist soll er die Schleife eigentlich verlassen, stattdessen schreibt er sich tot. Wenn ich die break; anweisung nicht auskommentiere sagt er (eclipse) "else" wär ein fehlerhaftes token was ich löschen solle. Wie verlasse ich die schleife dann und warum ist sie endlos??
Wundern tut mich auch, dass die if oder while schleife in meiem buch ohne geschweifte Klammern definiert wird, auf verschiedenen webseiten und in meinem Gedächtnis sollte man diese allerdings benutzen.
Hab wahrscheinlich grad ein Brett vor'm Kopf, hoffe aber ihr könnt mir helfen. :confused:

mfg, Mint

Mint 10.10.10 21:36

omg....
 
omg ich sags ja, Brett vorm Kopf :D

Hab's folgendermaßen gefixt:
Code:

public class alphabet {
   
    /*public alphabet () {
           
       
    }*/

   
    public static void test(char[]usrinput) {
       
        char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
       
        int i = 0;
        while (i<27)
            if (usrinput[0]==alphabet[i]) {
                System.out.println("Der eingegebene Buchstabe ist der "+(i+1)+". im Alphabet!");
                i=27; //oder auch break;
            }
            else
                i++;

Das mit den Klammern hat sich also auch erledigt.
@mods: Kann gelöscht oder für andere Leute die auch ein Brett vorm kopf haben gelassen werden :)

mfg, Mint

PornoPenner 10.10.10 21:42

1. Java-Syntax lernen... d.h. Klammern "{" "}" etc.

2. Wenn eine passende Stelle gefunden wird, dann wird das else NIE erreicht.

Korrekt (auf die schnelle):


while (i<27) {
if (usrinput[0]==alphabet[i]) {
System.out.println("Der eingegebene Buchstabe ist der "+(i+1)+". im Alphabet!");
i++; // So findet er alle Buchstaben
// break; <--- So nur den ersten!
} else
i++;
}

Statt "27" solltest Du auch char[].length verwenden.


Sollte so klappen.

Grüße
Onkel PornoPenner


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.