Erste Schritte 100% cpu auslastung (evtl unendliche while schleife?)

LangUndBreit

Neues Mitglied
Hallo zusammen, ich bin totaler neuling auf der java insel und hab ein simples programm zur passwortabfrage und speicherung geschrieben.

leider wird bei ausführung meine cpu voll ausgelastet, obwohl ich (meiner meinung nach) die while schleife beende.
kann mir evtl jmd die augen öffnen??

dessweiteren währe es cool, wenn ich das programm nicht neu starten müsste, bzw den ganzen folgenden code 2 mal einzufügen, denn es wird noch einiges dazukommen, was auch beim erststart funktionieren sollte

vielen dank schon mal im vorraus und vergebt mir, das ich nur gefähliches halbwissen besitze ;)

Java:
import java.util.Scanner;
import java.io.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException; 


public class Main {

	@SuppressWarnings("null")
	public static void main(String[] args) throws IOException {

		String password = null;
		String eingabePassword = null;
		String text = eingabePassword;
        String dateiName = "password.txt";
        String zeile = null;
       
        
        
		Scanner scanner = new Scanner(System.in);
		
		File file = new File("password.txt");
		
		if (file.exists()) {
            System.out.println("Bitte geben sie ihr Passwort ein:"); 
            eingabePassword = scanner.nextLine();
		
            FileReader fr;
            BufferedReader br;
            try {
                fr = new FileReader(dateiName);
                br = new BufferedReader(fr);
               
               
             
                zeile = br.readLine();
                if (eingabePassword.equals(zeile)) {
                    System.out.println("Eingabe korrekt, ihr Passwort lautet: " + zeile);    
                }

                else {  
                	System.out.println("Falsches Passwort!");	
                	
                }}
        		
            
                catch (IOException e){
                System.out.println("Fehler beim Lesen der Datei ");
                System.out.println(e.toString());
            
            }   
            
                }

            
           
                   else {
			System.out.println("Die App wird zum ersten mal ausgeführt,");
			System.out.println("Bitte legen sie ihr Passwort fest:");   
            eingabePassword = scanner.nextLine();
            FileOutputStream schreibeStrom = 
                             new FileOutputStream(dateiName);
            for (int i=0; i < eingabePassword.length(); i++){
              schreibeStrom.write((byte)eingabePassword.charAt(i));
            }
            schreibeStrom.close();
            System.out.println("Passwort Gespeichert!");
            System.out.println("Bitte app neu starten");
        
		 
		 
		}
		while (!eingabePassword.equals(zeile));{
		System.out.println("Programm startet - have fun!");
		zeile = null;
		//... und los gehts
		 
	}	
 }
}
 

Gucky

Top Contributor
Du beendest die while Schleife nicht, da der Text ausgegeben wird, du zeile null setzt und dies noch mal passiert. Und noch mal und noch mal...

Du könntest einen boolean laufen erstellen, von dessen Zustand das Weiterlaufen einer while-Schleife abhängt.
In dieser while-Schleife rufst du eine Methode auf, die die Eingabe parst (in Befehle auflöst) und dementsprechend einen Wert zurückgibt. Die while-Schleife jagt den zurückgegebenen Wert durch einen switch-case, der entscheidet, was als nächstes passieren soll und ggf. laufen auf false setzt.
 

Ähnliche Java Themen

Neue Themen


Oben