Hallo,
ich bekomme immer den folgenden Fehler:
Habe meinen eigenen Code jetzt schon sehr aufgestückelt, um an den Fehler zu kommen, jedoch finde ich in trotzdem nicht..
Hier meine Automat class:
Meine Kunde Klasse:
und meine Main Methode:
Meine Textdatei:
ich bekomme immer den folgenden Fehler:
Code:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:860)
at java.base/java.util.Scanner.next(Scanner.java:1497)
at java.base/java.util.Scanner.nextInt(Scanner.java:2161)
at java.base/java.util.Scanner.nextInt(Scanner.java:2115)
at de.uni_hannover.sim.nico.automat.Automat.start(Automat.java:15)
at de.uni_hannover.sim.nico.Main.main(Main.java:13)
Habe meinen eigenen Code jetzt schon sehr aufgestückelt, um an den Fehler zu kommen, jedoch finde ich in trotzdem nicht..
Hier meine Automat class:
Java:
package de.uni_hannover.sim.nico_ostendorf.automat;
import de.uni_hannover.sim.nico_ostendorf.kunde.*;
import java.util.*;
import java.io.*;
public class Automat {
public void start(File f){
Scanner s;
Kunde kundenlist[] = new Kunde[50];
try{
s = new Scanner(f);
for (int i = 0; i < kundenlist.length && s.hasNext(); i++){
kundenlist[i] = new Kunde();
if (s.hasNext()){
kundenlist[i].kundennummer = s.nextInt();
}
if(s.hasNext()){
kundenlist[i].name = s.next();
}
if(s.hasNext()){
kundenlist[i].vorname = s.next();
}
if(s.hasNext()){
kundenlist[i].kontostand = s.nextDouble();
}
if(s.hasNext()){
kundenlist[i].dispo = s.nextDouble();
}
}
}
catch(FileNotFoundException e){
System.exit(0);
}
String benutzername = javax.swing.JOptionPane.showInputDialog( "Wie ist ihre Kundennummer?" );
Kunde aktuellerkunde = kundenlist[0];
for (int i = 0; i <= kundenlist.length; i++){
if (i < kundenlist.length){
if (kundenlist[i].kundennummer == Integer.parseInt(benutzername)){
aktuellerkunde = kundenlist[i];
break;
}
}
if (i == kundenlist.length){
System.out.println("Sie sind kein Kunde!");
System.exit(0);
}
}
String passwort = javax.swing.JOptionPane.showInputDialog( "Wie lautet ihr Nachname?" );
if ( passwort.equals(aktuellerkunde.name) == false ){
System.exit(0);
}
String vorhaben = javax.swing.JOptionPane.showInputDialog( "Was möchten sie machen?" );
if (vorhaben.equals("Geld abheben")){
double gelder = 1;
if (aktuellerkunde.genuggeld()){
String geld = javax.swing.JOptionPane.showInputDialog( "Wie viel Geld möchten Sie abheben?" );
try{
gelder = Double.parseDouble(geld);
}
catch(NumberFormatException q){
System.err.println("Sie haben keinen Geldbetrag eingegeben!");
System.exit(0);
}
if (gelder <= aktuellerkunde.wieviel()){
System.out.printf("Sie haben %f Euro abgehoben.%n", gelder);
aktuellerkunde.kontostand = aktuellerkunde.kontostand - gelder;
}
else {
System.out.printf("Sie können nur %f Euro abheben. Geld wird ausgegeben.... %n", aktuellerkunde.wieviel());
}
}
else {
System.out.println("Sie können leider kein Geld mehr abheben!");
}
}
if (vorhaben.equals("Kontostand anzeigen")){
System.out.printf("Sie haben aktuell %f Euro auf dem Konto%n", aktuellerkunde.kontostand);
String jetzt = javax.swing.JOptionPane.showInputDialog( "Möchten Sie noch was tun?" );
if (jetzt.equals("ja")){
fortsetzen(aktuellerkunde);
System.exit(0);
}
else {
System.exit(0);
}
}
if (vorhaben.equals("Geld einzahlen")){
double gelder = 1;
String geld = javax.swing.JOptionPane.showInputDialog( "Wie viel Geld möchten Sie einzahlen?" );
try{
gelder = Double.parseDouble(geld);
}
catch(NumberFormatException q){
System.err.println("Sie haben keinen Geldbetrag eingegeben!");
System.exit(0);
}
aktuellerkunde.kontostand = aktuellerkunde.kontostand + gelder;
System.out.printf("Sie haben jetzt %f Euro auf dem Konto", aktuellerkunde.kontostand);
}
}
public void fortsetzen (Kunde aktuellerkunde){
String vorhaben = javax.swing.JOptionPane.showInputDialog( "Was möchten sie jetzt machen?" );
if (vorhaben.equals("Geld abheben")){
double gelder = 1;
if (aktuellerkunde.genuggeld()){
String geld = javax.swing.JOptionPane.showInputDialog( "Wie viel Geld möchten Sie abheben?" );
try{
gelder = Double.parseDouble(geld);
}
catch(NumberFormatException q){
System.err.println("Sie haben keinen Geldbetrag eingegeben!");
System.exit(0);
}
if (gelder <= aktuellerkunde.wieviel()){
System.out.printf("Sie haben %f Euro abgehoben.%n", gelder);
aktuellerkunde.kontostand = aktuellerkunde.kontostand - gelder;
}
else {
System.out.printf("Sie können nur %f Euro abheben. Geld wird ausgegeben.... %n", aktuellerkunde.wieviel());
}
}
else {
System.out.println("Sie können leider kein Geld mehr abheben!");
}
}
if (vorhaben.equals("Kontostand anzeigen")){
System.out.printf("Sie haben aktuell %f Euro auf dem Konto%n", aktuellerkunde.kontostand);
}
if (vorhaben.equals("Geld einzahlen")){
double gelder = 1;
String geld = javax.swing.JOptionPane.showInputDialog( "Wie viel Geld möchten Sie einzahlen?" );
try{
gelder = Double.parseDouble(geld);
}
catch(NumberFormatException q){
System.err.println("Sie haben keinen Geldbetrag eingegeben!");
System.exit(0);
}
aktuellerkunde.kontostand = aktuellerkunde.kontostand + gelder;
System.out.printf("Sie haben jetzt %f Euro auf dem Konto%n", aktuellerkunde.kontostand);
}
String jetzt = javax.swing.JOptionPane.showInputDialog( "Möchten Sie noch was tun?" );
if (jetzt.equals("ja")){
fortsetzen(aktuellerkunde);
}
else {
System.exit(0);
}
}
}
Meine Kunde Klasse:
Java:
package de.uni_hannover.sim.nico_ostendorf.kunde;
public class Kunde {
public String name;
public String vorname;
public int kundennummer;
public double kontostand;
public double dispo;
public Kunde(){
name = "";
vorname = "";
kundennummer = 0;
kontostand = 0;
dispo = 0;
}
public Kunde(int kundennummer, String name, String vorname, double kontostand, double dispo){
this.name = name;
this.vorname = vorname;
this.kundennummer = kundennummer;
this.kontostand = kontostand;
this.dispo = dispo;
}
public double wieviel (){
return kontostand - dispo;
}
public boolean genuggeld (){
return (this.wieviel() > 0);
}
public void neuerkontostand(double i){
this.kontostand = kontostand - i;
}
}
und meine Main Methode:
Code:
package de.uni_hannover.sim.nico_ostendorf;
import de.uni_hannover.sim.nico_ostendorf.kunde.*;
import de.uni_hannover.sim.nico_ostendorf.automat.*;
import java.io.*;
public class Main {
/**
* Starts the simulation.
*/
public static void main(String[] args) {
Automat automat = new Automat();
File f = new File("/Users/nicoostendorf/Desktop/funjava/de/uni_hannover/sim/nico_ostendorf/kunden.rtf");
automat.start(f);
}
}
Meine Textdatei:
Code:
1001 Leiter Thomas 500 200
1002 Thomas Reiner 1500 250
1003 Muller Tim 20 0
1004 Sehrbe Julia 11000 1000
1005 Stalk Anne 5400 500
1006 Meyer Nick 20000 10000