String in Int konvertieren - für mich nicht verständlich

Weonde

Mitglied
Moin,

ich verzweifele gerade an dem simplen Problem, einen String in einen Int umzuwandeln...
Ich programmiere Java zur Zeit in der Schule und hatte bisher keinerlei Probleme, allerdings schaffe ich es nicht zu parsen...
Ich habe bereits google zur Hilfe genommen, doch egal welchen Quelltext ich auch mir zur Hilfe genommen habe, keiner konnte helfen und ich kann mir den Fehler einfach nicht erklären...

Code:
 case 2:
                {	
                	
                	String jahr;
                    int Ajahr;   
                    int Bjahr;
        jahr=JOptionPane.showInputDialog("Geben Sie ihr Geburtsjahr ein");
       
        jahr = Integer.parseInt(Bjahr);
        Ajahr=2008-Bjahr;
        

        if(18>=jahr)
        {	
            JOptionPane.showMessageDialog(null,"Sie sind volljährig");
            System.out.printf("Sie sind volljährig");
        } 

        if(18<jahr)
        {
            JOptionPane.showMessageDialog(null,"Sie sind nicht volljährig");
            System.out.printf("Sie sind nicht volljährig");
        }
        break;
        }

Hier z.B., in diesem Beispiel, sagt mir mein Eclipse immer,
Code:
The method parseInt(String) in the type Integer is not applicable for the arguments

Ich hoffe, das der Code verständlich ist...

Kann mir bitte jemand die Lösung meines Problemes verraten?
Vielen Dank!
 
Moin,

der Fehler ist eigentlich ganz logisch, wenn man ihn denn nicht überliest.

Java:
String jahr;
int Ajahr;   
int Bjahr;
jahr = JOptionPane.showInputDialog("Geben Sie ihr Geburtsjahr ein");
jahr = Integer.parseInt(Bjahr);
In der letzten Zeile hast Du alles durcheinander geworfen.
jahr ist ein String, dem Du versuchst, ein Integer zuzuweisen - Fehler Nummer 1.
Bjahr ist ein int, welches Du mit Integer.parseInt() versuchst in ein Integer zu casten - Fehler Nummer 2.

Die richtige Anwendung:
Java:
String jahr;
int Ajahr;   
int Bjahr;
jahr = JOptionPane.showInputDialog("Geben Sie ihr Geburtsjahr ein");
Bjahr = Integer.parseInt(jahr);

Danach musst Du Deine if-Anweisungen nochmals umschreiben, da diese mit entweder Ajahr oder Bjahr arbeiten müssen,
nicht aber mit jahr (einem String).

Gruß,
Xan
 
Moin,

ich glaube eher, dass der Fehler in dieser Zeile auftritt:
Java:
if(18<jahr)
Du musst schon den ganzen Code anpassen und nicht nur eine entsprechende Zeile.

Außerdem ist es wohl schöner anzusehen, die Variable als erstes Argument zu verwenden:
Java:
if(Ajahr < 18) // minderjährig
if(Ajahr >= 18) // volljährig

Und um die Sache abzukürzen:
Java:
if(Ajahr < 18) {
 // minderjährig
} else {
 // volljährig
}
Das spart Dir Code.

Gruß,
Xan
 
Wiedermal ein klassischer Fall von schlechten Variablennamen ;). yearOfBirth, age währen wohl besser gewesen. Englisch ist dabei nicht entscheidend, sollte aber aufgrund von Umlautproblemen und dem Fakt, dass sich deutsch einfach immer wie ein Fremdkörper in einer Programmiersprache die auf englischen Schlüsselwörtern besteht anfühlt, bevorzugt werden.

Gruß
Ollie
 
Zurück