OOP Java Projekt Bankautomat input fehler

Christian!

Mitglied
Hallo zusammen =)

bin ganz neu auf dem Gebiet Java, und wollte jetzt als Projekt ein Bankautomat erstellen.

Habe jetzt eine fehlermeldung und weiß nicht warum, vill könnt ihr mir ja helfen.

Hier der Sourcecode:

[Java]

import java.util.Scanner;
//==============================================================================
// Bankautomat
//==============================================================================
public class Bankautomat
{

// Eigenschaften
//----------------------------------------------------------------------------


//Bank
public int bankkapital = 100000 ;
//Max
public static String userMax = "Max" ;
public static String pwMax = "1111" ;
public double kapitalMax = 150.50 ;
//Chris
public String benutzernameChris = "Chris";
public int kennwortChris = 2222 ;
public double kapitalChris = 950.00 ;
//Madin
public double kapitalMadin = 250.50 ;
public String benutzernameMadin = "Madin";
public int kennwortMadin = 3333 ;
//Benny
public double kapitalBenny = 400.00 ;
public String benutzernameBenny = "Benny";
public int kennwortBenny = 0000 ;

public double abbuchbetrag ;
public String haupt ;
public int logintest ;
public String Benutzername ;
public String Kennwort ;




//Methonden (Funktionen)
//----------------------------------------------------------------------------

//Begrüsung

public void begrüsung ()
{
System.out.println("##########################################") ;
System.out.println( "Herzlich Willkommen bei der VolksBank Süd!");
System.out.println("###########################################");
}




//Anmeldung

public static void login( String[] args )
{
System.out.println("Wie lautet ihr Benutzername ?");
String Benutzername = new Scanner (System.in); // HIER
System.out.println("Wie lautet ihr Kennwort ?");
String kennwort = new Scanner (System.in); //und hier liegt der Fehler


if (Benutzername == userMax && kennwort == pwMax)
{

int logintest = 1;
System.out.println("login successful.");
}

if (Benutzername != userMax && kennwort == pwMax )
{
int logintest = 0;
System.err.println("Login failed,bad username.");
}

if (Benutzername == userMax && kennwort != pwMax )
{
int logintest = 0;
System.err.println("Login failed, bad keyword.");
}

if (Benutzername != userMax && kennwort != pwMax )
{
int logintest = 0;
System.err.println("Login failed, bad keyword,bad username.");
}

}


//Hauptmenu
public static void main( String[] args )
{


System.out.println("\n");
System.out.println( "Kontostand anzeigen" );
System.out.println( "Abbuchen" );
System.out.println( "Einzahlen" );
System.out.println( "Konto bewegungen anzeigen" );
String tun = javax.swing.JOptionPane.showInputDialog( "Was Möchten sie tun ?" );

}
//Kontostand anzeigen
public static void main1( String[] args )
{

System.out.println();


}





// ===========================================================================
// TEST CLASS: Mensch
// ===========================================================================
public static void aussgabe(final String[] args)
{

// if anmeldung erfolgreich --> Hauptmenu
// else fehlermeldung, sorry try it again


}



}


[/code]
 
1. wie lautet die Fehlermeldung
Java:
 String kennwort = new Scanner (System.in);
2. ein Scanner ist kein String ... das kannst du nicht machen

so
Java:
   Scanner sc  = new Scanner (System.in);
      String passwort = sc.nextLine();
 
Hallo,

Ich bin selbst nicht der Java Experte, bin auch gerade erst am lernen, aber was mir aufgefallen ist:

du solltest erstmal eine scanner "erschaffen"
zb:
Java:
Scanner eingabe = new Scanner(System.in);

anschließend solltest du das System. in nicht mehr verwenden. das hat mich damals geschmießen. also einmal den Scanner instanzieren (hoffe das wort passt^^)

und dann für jede eingabe sowas
zb:
Java:
String name = eingabe.NextLine();
String passwort = eingabe.NextLine();

Das sollte dir als name die erste Zeile geben und für das Passwort dann die nächste Zeile.

So hab ich das zumindest gemacht.
Aber wie gesagt ich bin alles andere als gut 🙂
Hoffe es hilft trotzdem ein wenig weiter 🙂

lg,
R4xx4r
 
Zuletzt bearbeitet:
was is den der unterscheid zwischen reader und scanner ?

und wenn ich jetzt reader benutzen will, nachdem ich den scanner einmalig benutzt hab,
wird mir das bei eclipse rot unterstrichen.

fehlt mir da noch ein import von der bib.?

MfG Chris


Meine Aktualliesierung :

Java:
import java.util.Scanner;
//==============================================================================
// Bankautomat
//==============================================================================
public class Bankautomat
{

  // Eigenschaften
  //----------------------------------------------------------------------------
  
  
  //Bank
  public int bankkapital                             =  100000 ;
  //Max
  public static String userMax                       =  "Max"  ;
  public static String pwMax                         =  "1111" ;
  public double kapitalMax                           =  150.50 ;
  //Chris
  public String benutzernameChris                    =  "Chris";
  public static String pwChris                       =  2222   ;
  public double kapitalChris                         =  950.00 ;
  //Madin
  public double kapitalMadin                         =  250.50 ;
  public String benutzernameMadin                    =  "Madin";
  public static String  pwMadin                      =  3333   ;
  //Benny
  public double kapitalBenny                         =  400.00 ;
  public String benutzernameBenny                    =  "Benny";
  public static String pwBenny                       =  0000   ;
  
  public double abbuchbetrag                                   ;
  public String haupt                                          ;
  public int logintest                                         ;
  public String Benutzername                                   ;
  public String Kennwort                                       ;
  
  
  
  
//Methonden (Funktionen)
//----------------------------------------------------------------------------
  
  //Begrüsung  
  
  public void begrüsung ()
  {
    System.out.println("##########################################") ;
    System.out.println( "Herzlich Willkommen bei der VolksBank Süd!");
    System.out.println("###########################################");
  }
  
  
  
  
  //Anmeldung
  
  public static void login( String[] args )
  {
    
    Scanner eingabe = new Scanner(System.in);
    
    System.out.println("Wie lautet ihr Benutzername ?");
    String bn = reader.NextLine();
    System.out.println("Wie lautet ihr Passwort ?");
    String pw = reader.NextLine();   
    
    
    if (bn == userMax && pw == pwMax) 
    {
      
      int logintest = 1; 
      System.out.println("login successful.");
    }
    
    if (bn !=  userMax && pw == pwMax )
    {
      int logintest = 0;
      System.err.println("Login failed,bad username.");
    }
    
    if (bn ==  userMax && pw != pwMax  )
    {
      int logintest = 0;
      System.err.println("Login failed, bad keyword.");
    }
      
    if (bn !=  userMax && pw != pwMax  )
    {
      int logintest = 0;
      System.err.println("Login failed, bad keyword,bad username.");
    }
    
  }
  
  
  //Hauptmenu
    public static void main( String[] args ) 
    { 
      
      
      System.out.println("\n");
      System.out.println( "Kontostand anzeigen" ); 
      System.out.println( "Abbuchen" );
      System.out.println( "Einzahlen" );
      System.out.println( "Konto bewegungen anzeigen" );
      String tun = javax.swing.JOptionPane.showInputDialog( "Was Möchten sie tun ?" ); 
      
  }  
    //Kontostand anzeigen
    public static void main1( String[] args ) 
    {
     
      System.out.println();
      
      
    }
    
    
    
    
    
    // ===========================================================================
    // TEST CLASS: Mensch
    // ===========================================================================
    public static void aussgabe(final String[] args)
    {
      
      // if anmeldung erfolgreich --> Hauptmenu 
      // else fehlermeldung, sorry try it again
      
      
    }
    
    
    
}

[/Java]
 
Zuletzt bearbeitet:
SRY
habe das reader aus gewohnheit geschrieben weil ich meinen Scanner eig immer reader nenn 🙂

es sollte also so sein wie es jetzt bei mir steht.

also
Java:
Scanner eingabe = new Scanner(System.in);
String name = eingabe.NextLine();
String passwort = eingabe.NextLine();

So hast du einen Scanner instanziert und die erste Ziele als name und die zweite Zeile als Passwort eingelesen
Da kann man dann natürlich noch Text dazwischen schreiben.

Java:
Scanner eingabe = new Scanner(System.in);
System.out.print("Bitte Ihren Benutzernamen eingeben: ");
String name = eingabe.NextLine();
System.out.print("Bitte Ihr Passwort eingeben: ");
String passwort = eingabe.NextLine();

So sollte es eigentlich passen. Ich habe es zumindest so bei meinen Einlese - Bearbeite - Ausgabe Bsp gemacht.

Bei dir gehört also eingabe. statt dem reader.
Java:
System.out.println("Wie lautet ihr Benutzername ?");
    String bn = eingabe.NextLine();
    System.out.println("Wie lautet ihr Passwort ?");
    String pw = eingabe.NextLine();



lg,
R4xx4r
 
Zuletzt bearbeitet:
Kannst du mir noch schnell erklären warum das so ist ?

sonst mache ich das beim nächsten mal wieder falsch^^

Java:
 String kennwort = new Scanner (System.in);

Du hast hier eine Variable "kennwort" diese ist nach deiner Definition von Typ String.
Der Scanner ist kein String und gibt somit auch keinen String zurück.

Java:
Scanner scanner = new Scanner(System.in);
String passwort = scanner.nextLine();

Die Methode nextLine() der Klasse Scanner() gibt einen String zurück.

Du musst dir die API von Scanner anschauen, bevor du es nutzt.
Scanner (Java 2 Platform SE 5.0)

Dann siehst man, dass die Methode einen String zurückgibt...

@R4xx4r, Christian!

und vor allem, dass man nextLine() schreibt und nicht NextLine(). Sonst geht des nicht!

Was mir sonst noch aufgefallen ist:

ich würde bei einem Loginmechanismus niemals ohne Not verraten, was falsch eingegeben wurde. Das ist eine unnötige Hilfe für den unbefugten Benutzer. Das läd sonst zum Ausprobieren ein!
 
Zuletzt bearbeitet:
So, ich hab jetzt noch mal ein bisschen weiter gemacht.

erst mal danke an alle das ihr mir helfen wollt =).

allerdings hab ich jetzt das nächste problem^^

ich woll oben die ganzen funktionen haben und die eben unten wieder abrufen können.

allerdings bekomm ich jetzt nicht die normale Ausgabe der "getbegruesung,,.


Java:
import java.util.Scanner;
//==============================================================================
// Bankautomat
//==============================================================================
public class Bankautomat
{

  // Eigenschaften
  //----------------------------------------------------------------------------
  
  
  //Bank
  public int bankkapital                             =  100000 ;
  //Max
  public static String userMax                       =  "Max"  ;
  public static String pwMax                         =  "1111" ;
  public double kapitalMax                           =  150.50 ;
  //Chris
  public String benutzernameChris                    =  "Chris";
  public static String pwChris                       =  "2222"   ;
  public double kapitalChris                         =  950.00 ;
  //Madin
  public double kapitalMadin                         =  250.50 ;
  public String benutzernameMadin                    =  "Madin";
  public static String  pwMadin                      =  "3333"   ;
  //Benny
  public double kapitalBenny                         =  400.00 ;
  public String benutzernameBenny                    =  "Benny";
  public static String pwBenny                       =  "0000"   ;
  
  public double abbuchbetrag                                   ;
  public String haupt                                          ;
  public int logintest                                         ;
  public String Benutzername                                   ;
  public String Kennwort                                       ;
  
  
  
  
//Methonden (Funktionen)
//----------------------------------------------------------------------------
  
  //Begrüsung  
  
  public static void getbegruesung ()
  {
    System.out.println("##########################################") ;
    System.out.println( "Herzlich Willkommen bei der VolksBank Süd!");
    System.out.println("###########################################");
  }
  
  
  
  
  //Anmeldung
  
  public static void getAnmeldung( String[] args )
  {
    
    
    Scanner eingabe = new Scanner(System.in);
    System.out.print("Bitte Ihren Benutzernamen eingeben: ");
    String bn = eingabe.nextLine();
    System.out.print("Bitte Ihr Passwort eingeben: ");
    String pw = eingabe.nextLine();
    
    
    if (bn == userMax && pw == pwMax) 
    {
      
      int logintest = 1; 
      System.out.println("login successful.");
    }
    
    if (bn !=  userMax && pw == pwMax )
    {
      int logintest = 0;
      System.err.println("Login failed,bad username.");
    }
    
    if (bn ==  userMax && pw != pwMax  )
    {
      int logintest = 0;
      System.err.println("Login failed, bad keyword.");
    }
      
    if (bn !=  userMax && pw != pwMax  )
    {
      int logintest = 0;
      System.err.println("Login failed, bad keyword,bad username.");
    }
    
  }
  
  
  //Hauptmenu
    public void  getHauptmenu( String[] args ) 
    { 
      
      System.out.println("\n"); 
      System.out.println( "Kontostand anzeigen" ); 
      System.out.println( "Abbuchen" );
      System.out.println( "Einzahlen" );
      System.out.println( "Konto bewegungen anzeigen" );
      
      Scanner tun = new Scanner(System.in);
      String machen = tun.nextLine();
      
  }  
    //Kontostand anzeigen
    public static void getKontostand( String[] args ) 
    {
     
      System.out.println();
      
      
    }
    
    
    
    
    
    // ===========================================================================
    // TEST CLASS: Mensch
    // ===========================================================================
    public static void main(final String[] args)
    {
      
      System.out.println(getbegruesung);
      
      
      
      // if anmeldung erfolgreich --> Hauptmenu 
      // else fehlermeldung, sorry try it again
      
      
    }
    
    
    
}

[/Java]
 
ehrlich gesagt wird dir hier keine komplett Objektorientierte programmierung beibringen... nimm ein Tutorial zu hand und probiere es damit aus.

Du scheinst nicht zu wissen wie man a) ein Objekt erzeugt und b) was Methoden sind und wie man sie aufruft.

daher ist es wesentlich sinnvoller fuer alle, wenn du dies erstmal ueber Tutorials / Buecher anschaust.

um noch eine Antwort auf deinen Fehler zu geben:

Java:
getBegruessung();
 
Zuletzt bearbeitet von einem Moderator:
Der ersten Artikel, den Dir ARadauer empfohlen hat dürfte den Kern deines aktuellen Problemes treffen.

Mein Tip:

Lass am Anfang, die Finger von statischen Methoden!

Entferne das static überall, und erstelle ne neue Klasse z.B mit dem Namen Starter. Hau da deine main Methode rein, die muss dann aber schon static sein. Starte deine Bankklasse nun hier

Bankautomat automat = new Bankautomat();
System.out.println(automat.dieentsprechendeMethode);


Java:
public String Kennwort

Das hier geht übrigends überhaupt nicht! Das Kennwort darf auf keinen Fall public sein!
 
Zuletzt bearbeitet:
Ok hab die eingabe hinbekommen allerdings bekomm ich jetzt immer die fehlermeldung,:""Login failed, bad keyword,bad username.".

Jemand ne idee ?


[Java]
import java.util.Scanner;
//==============================================================================
// Bankautomat
//==============================================================================
public class Bankautomat
{

// Eigenschaften
//----------------------------------------------------------------------------


//Bank
public int bankkapital = 100000 ;
//Max
public static String userMax = "Max";
public static String pwMax = "3412";
public double kapitalMax = 150.50;
//Chris
public String benutzernameChris = "Chris";
public static String pwChris = "2222";
public double kapitalChris = 950.00 ;
//Madin
public double kapitalMadin = 250.50 ;
public String benutzernameMadin = "Madin";
public static String pwMadin = "3333" ;
//Benny
public double kapitalBenny = 400.00 ;
public String benutzernameBenny = "Benny";
public static String pwBenny = "0000" ;

public double abbuchbetrag ;
public String haupt ;
public int logintest ;
public String Benutzername ;
public String Kennwort ;




//Methonden (Funktionen)
//----------------------------------------------------------------------------

//Begrüsung

public static void getbegruesung ()
{
System.out.println("##########################################") ;
System.out.println( "Herzlich Willkommen bei der VolksBank Süd!");
System.out.println("###########################################");
}




//Anmeldung

public void getAnmeldung()
{


Scanner eingabe = new Scanner(System.in);
System.out.print("Bitte Ihren Benutzernamen eingeben: ");
String bn = eingabe.nextLine();
System.out.print("Bitte Ihr Passwort eingeben: ");
String pw = eingabe.nextLine();


if (bn == userMax && pw == pwMax)
{

int logintest = 1;
System.out.println("login successful.");
}

if (bn != userMax && pw == pwMax )
{
int logintest = 0;
System.err.println("Login failed,bad username.");
}

if (bn == userMax && pw != pwMax )
{
int logintest = 0;
System.err.println("Login failed, bad keyword.");
}

if (bn != userMax && pw != pwMax )
{
int logintest = 0;
System.err.println("Login failed, bad keyword,bad username.");
}

}


//Hauptmenu
public void getHauptmenu( String[] args )
{

System.out.println("\n");
System.out.println( "Kontostand anzeigen" );
System.out.println( "Abbuchen" );
System.out.println( "Einzahlen" );
System.out.println( "Konto bewegungen anzeigen" );

Scanner tun = new Scanner(System.in);
String machen = tun.nextLine();

}
//Kontostand anzeigen
public static void getKontostand( String[] args )
{

System.out.println();


}





// ===========================================================================
// TEST CLASS: Mensch
// ===========================================================================
public static void main(final String[] args)
{
Bankautomat VoBa = new Bankautomat();
VoBa.getAnmeldung();


// if anmeldung erfolgreich --> Hauptmenu
// else fehlermeldung, sorry try it again


}



}

[/Java]
 
Strings vergleicht man mit equals(). Google mal und les das nach

z.B. ist das schon mal falsch:

bn == userMax

bn und userMax sind Strings.


Bsp:

Java:
String s1= "sicher02";
String s2 = "sicher02";
boolean bool =  s1.equals(s2);
System.out.println(bool);//true
 
Zuletzt bearbeitet:
Du kommst hier rein. Das heißt sowohl dein Username als auch dein Passwort kommen nicht richtig an.
Wie Dir schon einige hier empfohlen haben, lern bitte erst mal die Grundlagen.
Java:
if (bn !=  userMax && pw != pwMax  )
    {
      int logintest = 0;
      System.err.println("Login failed, bad keyword,bad username.");
    }



Was du vielleicht auch noch wissen solltest. Zum negieren von equals schreibt man ein ! davor.
 
Zuletzt bearbeitet:

Zurück
Oben