Verständnisproblem mit swing

Gaining

Mitglied
Hallo Leute,
ich verstehe folgenden Quellcode nicht ganz zu 100%
Warum wird bei int eingabezahl noch mal nach dem =-heitszeichen Integer.parseInt geschrieben. Erwartet JOptionPane.showInputDialog in der Regel einen Stringwert oder wie ist das zu verstehen?
Danke schon mal für die Hilfe

import javax.swing.JOptionPane;

public class Zahlraten {

public static void main(String[] args) {
int zahl = 6;

int eingabezahl = Integer.parseInt(JOptionPane
.showInputDialog("Erraten Sie eine Zahl zwischen 1 und 10: "));
switch (eingabezahl) {
case 6:
JOptionPane.showMessageDialog(null, "Treffer!");
break;
case 4:
case 5:
case 7:
case 8:
JOptionPane.showMessageDialog(null, "Knapp daneben!");
break;
default:
JOptionPane.showMessageDialog(null, "Daneben!");
}
}

}
 
[TIPP]Java Code bitte in java-tags 🙂[/TIPP]

Da wird im OptionPane eine eingabe (String ) auf einen Integer ( Zahl ) geparst, also geprüft , ob der eingegebene String eine Ganzzahl enthält, die dann wiederrum in der Integer Variable gespeichert wird.

in diesem Fall ist es so das eine eingegebene 6 zu einem Treffer führt.

das parsen ist nichts anderes als würdest du z.b letztlich schreiben

Code:
int eingabe = 6;
 
Zuletzt bearbeitet:
Obwohl ich nicht verstehe, warum eingabezahl ein String sein soll, die Variable wurde doch mit int deklariert oder welchen Gedankenfehler habe ich?
 
ich kenn jetzt das JOptionPane nicht so gut, aber ich geh mal ganz stark davon aus, dass wenn ein user eine eingabe macht, dass das program diese ersteinmal als string bekommt.

also selbst wenn du in so ein feld z.B. eine 42 reinschreibst, dann ist das nicht die zahl 42, sonder die beiden zeichen '4' und '2' in einem string

damit das programm damit was anfangen kann, muss es erst in eine richtige zahl gebracht werden, mit Integer.parseInt(String s)

die variable ist mit int deklariert, also muss auch ein int rein, du hast nen String und musst den erst zu nem int machen
 
Zuletzt bearbeitet:
Eingaben in JTextAreas, JTextFields, JTables usw. werden gewöhnlich als Text, also vom Datentyp Strings von Java deklariert


sprich wenn du in einem OptionPane ein Textfeld hast, ist der Datentyp deiner eingabe String.

die Switch anweisung erwaret aber ein Wert vom Typ int,

deshalb erstellst du eine Integer Variable,

durch ausführung der Integer eigenen Methode
Code:
.parseInt();
die einen String erwartet, ( deine eingabe) gibt dir die Methode eine Ganzzahl zurück,insofern deine eingabe eine enthält(ansonsten löst der vorgang eine Exception aus!) also einen Wert vom Typ int.

Diese wird dann in deiner Integer Variable gespeichert, sie switch anweisung wertet jetzt die variable aus und startet den dazugehörigen "Fall"

einfaches Beispiel:

Code:
String s = "7" + "3"
bedeutet zwar das der "Wert des Strings 7 + 3 ist , aber vom Datentyp " String der Wert der variable s wäre demnach
Code:
"73"
und nicht 10

somit kannst du z.B damit nicht rechnen da es reiner Text ist.

um dies zu umgehen parst man den Text auf z.B Ganzzahlen(Integer) oder Gleitpunktzahlen(Double)
um ebend diesen spezifischen Datentyp zu erhalten,

in deinem Fall dort eben den Primitiven Datentyp int
 
Zuletzt bearbeitet:

Zurück
Oben