Fehlerhafte Eingabeproblem

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo, ich hab ein Problem und zwar:

Ich hab einen Scanner der Double einliest. Ist ein kleines Rechenprogramm. Nun kann man ja auch leider Buchstaben eingeben, und hier liegt das Problem. Leider bin ich absoluter Anfänger, hatte erst 2 Stunden Unterricht aber verstehe das Prinzip schon gut würde ich sagen. Der Fehler:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at waehrungs.Rechner.main(Rechner.java:29)


Wie löse ich das am besten?

Danke!
 
G

Guest

Gast
wie funktioniert as genau?



kannst du mir da vielleicht genauere tips geben. nur um die zeile 29?

danke schonmal
 

Der Müde Joe

Top Contributor
kannst du mir da vielleicht genauere tips geben. nur um die zeile 29?

naja...das ist die einzige Zeile von deinem code die ich kenne.

So etwa:
Code:
double d;
try{
d = scanner.nextDouble();
} catch(Exception e){
System.out.println("shit happens");
e.printStackTrace();
}

siehe JavaInsel
 
G

Guest

Gast
das problem ist dann, das er mir sagt das "betrag" nicht initialisiert wurde
vielleicht hab ich da einfach nur mist gebaut, aber bitte verzeih mir das. bin neuling :roll: :meld:

...
Code:
catch(Exception e){
	System.out.println("Betrag eingeben");
	e.printStackTrace(); 
}
{
if (auswahl.equals("1")){
	ergebnis = betrag/1.95582;
	System.out.println(betrag + " Euro entsprechen " + ergebnis + " DM");
			
	}
	else if (auswahl.equals("2")){
	ergebnis = betrag*1.95582;
	System.out.println(betrag + " DM entsprechen " + ergebnis + " Euro");}
}			
}
}
 

Der Müde Joe

Top Contributor
ist immer noch ein bischen wenig code...vor allem die Klammerung sieht nicht ok aus. nach dem catch(){..} kommt so eine einsame { Klammer.
Was ist im try? Oder wo ist das try?

gleicher Code wie von mir oben?

nimm zB einen Initialwert. Also:

double betrag = 1;

dann lies ihn ein..wenn es einen Fehler gibt ist er halt 1
 
G

Guest

Gast
Pardon, ich wollte eigentlich den gesamten Code posten. Nocheinmal.

Code:
	public static void main(String[] args) {
     
String auswahl;
double betrag;
double ergebnis;

Scanner sc;
sc = new Scanner(System.in);

do {System.out.println("Bitte eine Auswahl treffen");
System.out.println("1) Euro in DM");
System.out.println("2) DM in Euro");

auswahl=sc.next();

if (auswahl.equals("1"))
   System.out.println("Bitte Eurobetrag eingeben");
else if  (auswahl.equals("2"))
		 System.out.println("Bitte DM-Betrag eingeben");
}
while (!auswahl.equals("1") && !auswahl.equals("2"));

try{betrag = sc.nextDouble();
}
catch(Exception e){
	System.out.println("Betrag eingeben");
	e.printStackTrace(); 
}
{
if (auswahl.equals("1")){
	ergebnis = betrag/1.95582;
	System.out.println(betrag + " Euro entsprechen " + ergebnis + " DM");
			
	}
	else if (auswahl.equals("2")){
	ergebnis = betrag*1.95582;
	System.out.println(betrag + " DM entsprechen " + ergebnis + " Euro");}
}			
}
}

Fehler nun:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The local variable betrag may not have been initialized
The local variable betrag may not have been initialized
The local variable betrag may not have been initialized
The local variable betrag may not have been initialized

at waehrungs.Rechner.main(Rechner.java:38)



Danke für deine Hilfe.
 

Der Müde Joe

Top Contributor
immernoch:

double betrag = 1;

mal kurz mit indents:
Code:
    public static void main(String[] args) {

        String auswahl;
        double betrag = 1;
        double ergebnis;

        Scanner sc = new Scanner(System.in);

        do {
            System.out.println("Bitte eine Auswahl treffen");
            System.out.println("1) Euro in DM");
            System.out.println("2) DM in Euro");

            auswahl=sc.next();

            if (auswahl.equals("1"))
                System.out.println("Bitte Eurobetrag eingeben");
            else if  (auswahl.equals("2"))
                System.out.println("Bitte DM-Betrag eingeben");
        }
        while (!auswahl.equals("1") && !auswahl.equals("2"));

        try{
            betrag = sc.nextDouble();
        }
        catch(Exception e){
            System.out.println("Betrag eingeben");
            e.printStackTrace();
        }

        if (auswahl.equals("1")){
            ergebnis = betrag/1.95582;
            System.out.println(betrag + " Euro entsprechen " + ergebnis + " DM");

        }
        else if (auswahl.equals("2")){
            ergebnis = betrag*1.95582;
            System.out.println(betrag + " DM entsprechen " + ergebnis + " Euro");
        }           
    }

EDIT:
Den
e.printStackTrace()
könnte man eigentlich weglassen, Im Falle eines Fehlers wird dann einfach gewarnt und
1 Cash umgerechnet
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben