Java parsen

04/20/2013 16:40 Kita_epvp#1
Hey,
das Programm ist cmd basiert und soll nach ablauf der falschen PIN eingabe eine PUK eingabe veranlassen. Dies ist bereits programmiert. Jedoch soll nun mithilfe von interger.parseInt nach falscher PIN eingabe und korrekter PUK eingabe in die Variable Pinok ein neuer Wert geschrieben werden. Jedoch nur , wenn eben vorhergegangenes geschehen ist.

Wie stelle ich das am besten an ?

Code:
import java.io.*; //Importiert die java.io.* Bibliothek


public class PIN_PUK { // Deklaration der öffentlichen Klasse.
  // Diese Klasse muss genau so heißen wie die Datei!
  public static void main(String[] args)throws IOException {
    
    BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
    
    int pin; // Deklaration einer Variablen mit Namen pin vom Typ integer
    int pinok = 1234;
    int i = 0 ;
    int puk;
    int pukok = 4321;
    
    String eingabe;
    String eingabe2;
    String eingabe3;
    System.out.println("Herzlich Willkommen bei ihrer Sparkasse!");
    
    while(i < 3){ //Eine Abbruchbedingung im Schleifenkopf   
      System.out.println("Bitte geben sie ihre PIN ein!");
      
      eingabe = is.readLine();
      pin = Integer.parseInt(eingabe);
      
      //Eingabe der PIN
      if (pin == pinok) {
        i = 4; //Zählvariable i auf 4 (Abbruch) setzen mit dem Vermerk PIN korrekt 
        System.out.println("Ihre PIN war korrekt! Sie werden weitergeleitet!"); 
      } else {
        i = i + 1; //Zählvariable um eins erhöhen
        System.out.println("Ihre PIN war falsch!");
      } // end of if-else
    } // end of while
    
    if (i == 4) {
      System.out.println("");
    } else {
      System.out.println("PIN drei mal falsch eingegeben! Karte gesperrt!");
      
    } // end of if-else
    
    
    if (i == 4 ) {
      
    } // end of if
    else {
      while (i < 13) { 
        
        System.out.println("Bitte geben sie ihre PUK ein!");
        
        eingabe2 = is.readLine();
        puk = Integer.parseInt(eingabe2);
        
        //Eingabe der PUK
        if (puk == pukok) {
          i = 14; //Zählvariable i auf 4 (Abbruch) setzen mit dem Vermerk PIN korrekt 
          System.out.println("Ihre PUK war korrekt! Sie werden weitergeleitet!"); 
        } else {
          i = i + 1; //Zählvariable um eins erhöhen
          System.out.println("Ihre PUK war falsch!");  
        } // end of if else
      } 
      
      
      if (i == 14) {                     
        System.out.println("");
      } else {
        System.out.println("PUK zehn mal falsch eingegeben! Karte gesperrt!");
        eingabe2 = is.readLine();
        puk = Integer.parseInt(eingabe2);
        if (puk == pukok) {
          
        } // end of if
        else {
          System.out.println (" Bitte geben sie eine neue PIN ein " ) ;
          
          eingabe3 = is.readLine();
          pinok = Integer.parseInt(eingabe3);
          
          System.out.println (" Ihre PIN wurde geändert")       ;
          
        } // end of if-else
        
        
      } // end of if-else
      
    } // end of if-else
    
    
    //end of While Puk 
    
    
    
  }
  
  
  
  
  //end of main 
}
04/20/2013 18:10 disortion#2
Writeline als int parsen und davor nen Text: "Bitte geben sie zur Sicherheit einen neuen Pin ein...". Dann kannste wenn du willst den pin =writeline setzen.

Oder einfacher ausgedrückt:
Code:
eingabe3 = is.readLine();
pinok = Integer.parseInt(eingabe3);
pin=pinok;
System.out.println (" Ihre PIN wurde geändert") ;
Das wolltest du doch? Also den alten Pin überscheiben oder?
04/24/2013 19:58 MCMonkey#3
Ich würde für die Eingabe von Integer Werten nicht die BufferedReader, sondern die Scanner Klasse verwenden. Die Scanner Klasse verfügt über die Methode nextInt(), welche einen Integer Wert als Eingabe verlangt. Wenn kein Integer Wert eingegeben wird, wirft sie dir eine Exception, über die du eine Fehlerausgabe steuern kannst.

Beispiel:

Code:
int pin;
Scanner s = new Scanner(System.in);
while (true) {
     try {
           pin = s.nextInt();
     } catch (Exception e) {
           System.out.println("Ungültige Eingabe");
     }
}
Die Scanner Klasse befindet sich in java.util


EDIT#1: Sorry, habe übersehen, dass du interger.parseInt verwenden sollst um den String zu parsen. Vielleicht ist es ja trotzdem nützlich
04/29/2013 18:08 Kita_epvp#4
Hey,
habs nun so gelöst ( Lauffähig als Konsolenanwendung )

Code:
import java.io.*; //Importiert die java.io.* Bibliothek


public class PIN_PUK { // Deklaration der öffentlichen Klasse.
  // Diese Klasse muss genau so heißen wie die Datei!
  public static void main(String[] args)throws IOException {
    
    BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
    
    int pin; // Deklaration einer Variablen mit Namen pin vom Typ integer
    int pinok = 1234;
    int i = 0 ;
    int puk = 0;
    
    int pukok = 4321;
    
    String eingabe;
    String eingabe2;
    String eingabe3;
    System.out.println("Herzlich Willkommen bei ihrer Sparkasse!");
    
    while(i < 3){ //Eine Abbruchbedingung im Schleifenkopf   
      System.out.println("Bitte geben sie ihre PIN ein!");
      
      eingabe = is.readLine();
      pin = Integer.parseInt(eingabe);
      
      //Eingabe der PIN
      if (pin == pinok) {
        i = 4; //Zählvariable i auf 4 (Abbruch) setzen mit dem Vermerk PIN korrekt 
        System.out.println("Ihre PIN war korrekt! Sie werden weitergeleitet!"); 
      } else {
        i = i + 1; //Zählvariable um eins erhöhen
        System.out.println("Ihre PIN war falsch!");
      } // end of if-else
    } // end of while
    
    if (i == 4) {
      System.out.println("");
    } else {
      System.out.println("PIN drei mal falsch eingegeben! Karte gesperrt!");
      
    } // end of if-else
    
    
    if (i == 4 ) {
      
    } // end of if
    else {
      i = 0;
      while (i < 10) { 
        
        System.out.println("Bitte geben sie ihre PUK ein!");
        
        eingabe2 = is.readLine();
        puk = Integer.parseInt(eingabe2);
        
        //Eingabe der PUK
        if (puk == pukok) {
          i = 11; //Zählvariable i auf 4 (Abbruch) setzen mit dem Vermerk PIN korrekt 
          System.out.println("Ihre PUK war korrekt! Sie werden weitergeleitet!"); 
        } else {
          i = i + 1; //Zählvariable um eins erhöhen
          System.out.println("Ihre PUK war falsch!");  
        } // end of if else
      } 
      
      
      if (i == 11) {                     
        System.out.println("");
      } else {
        System.out.println("PUK zehn mal falsch eingegeben! Karte gesperrt!");
        eingabe2 = is.readLine();
        puk = Integer.parseInt(eingabe2);
      }
      if (puk == pukok) {
          
         System.out.println (" Bitte geben sie eine neue PIN ein " ) ;
          
         eingabe3 = is.readLine();
         pinok = Integer.parseInt(eingabe3);
          
         System.out.println (" Ihre PIN wurde geändert") ;
          
      } // end of if-else
        
        
      
    } // end of if-else
    
    
    //end of While Puk 
    
    
    
  }
  
  
  
  
  //end of main 
}