Frage von Rakozou, 71

Java: Argumente(z.B. feld[0]) in Int umwandeln?

import javax.swing.*;

public class ZahlenUmrechnerMain {

public static void main(String[] args) {
    

    //Textfeld erstellen
    JTextField[] feld = {new JTextField(), new JTextField(), new JTextField()};
    Object[] msg ={"Minuten", feld[0],"Sekunden", feld[1],"nur Sekunden", feld[2],
            "Entweder Min+Sek oder nur Sek!"};
    
    
    //Anzeigefenster
    JOptionPane.showConfirmDialog(null, msg, "Umrechner", 2);
        
    
    
        
    
    

}

}

Antwort
von stoffe19, 52

Warum so umständlich? Wieso arbeitest du nicht einfach mit Scanner = new Scanner(System.in) ? Soll ja eine Konsolenanwendung werden oder?

Kommentar von Rakozou ,

Kenne mich da leider noch nicht so aus ^^

Deswegen hab ich die Elemente benutzt , die ich schon kenne.

Ich schau mir jetzt an wie das mit dem Scanner funktioniert.

Danke für deine Antwort ^^

Kommentar von stoffe19 ,

Bitte :) wenn was ist, einfach melden ge :)

Kommentar von Rakozou ,

ist schon sehr hilfreich , aber ich würde es lieber wie ein Programm haben  und nicht mit einer Konsole ^^

Deswegen auch das JOptinPane usw :)

Kommentar von DontHaveAName ,

Falls du aber bei Swing-Elementen bleiben möchtest und den eingegeben Text eines JTextFields in einen Integer umwandeln möchtest, kannst du ganz einfach

Integer.parseInt() - verwenden. Übergeben musst du natürlich den String.

Achja, auf den Text eine JTextFields greifst du mit

(variablename deines TextFields).getText() zu

Kommentar von stoffe19 ,

Respekt! auch einer der bei sowas mal antwortet :D :) ! :)

Kommentar von DontHaveAName ,

Neulinge die es wenigstens selbst irgendwie versuchen helfe ich gerne weiter. ;).

Meisten bekommen die auch noch eine Freundschaftsanfrage hinter, damit ich denen bei ihren Projekten unterstützen kann.

Ist immer eine nette Wiederholung für mich als Student :).

Kommentar von stoffe19 ,

:D :) bin leider noch in einer Ausbildung, aber versuche trotzdem bisschen aus zu helfen :)

Kommentar von DontHaveAName ,

Finde ich super. Mach weiter so :).

Kommentar von Rakozou ,

Also bis jetzt kenne ich davon die Sachen (hab öfters mit Java angefangen und aufgehört) :D

Aber wie übergebe ich den String  ?^^

Kommentar von stoffe19 ,

(variablename deines TextFields).getText() = String

Kommentar von Rakozou ,

Danke :)

Kommentar von Rakozou ,

Als ich es getestet habe , mit JOptionPane.showMessageDialog(null,min * 60 + sek ); , kam ein Fehler.

import javax.swing.*;

public class ZahlenUmrechnerMain {

public static void main(String[] args) {

String eingabe = "";
int min = 0;
int sek = 0;
int sek2 = 0;

//Textfeld erstellen
JTextField[] feld = {new JTextField(), new JTextField(), new JTextField()};
Object[] msg ={"Minuten", feld[0],"Sekunden", feld[1],"nur Sekunden", feld[2],
"Entweder Min+Sek oder nur Sek!"};

//Anzeigefenster
JOptionPane.showConfirmDialog(null, msg, "Umrechner", 2);

String strmin = feld[0].getText();
String strsek = feld[1].getText();
String strsek2 = feld[2].getText();

min = Integer.parseInt(strmin);
sek = Integer.parseInt(strsek);
sek2 = Integer.parseInt(strsek2);

JOptionPane.showMessageDialog(null,min * 60 + sek );

Kommentar von Rakozou ,

hab den Fehler gefunden ^^

Bei JTextField muss ich alle Fenster ausfüllen :)

Kommentar von Rakozou ,

aber das Problem daran ist , dass ich will , dass man nur die oberen 2 oder das unterste ausfüllt , damit man min+sek in sek oder sek in min rechnet

Kommentar von KnusperPudding ,


Soll ja eine Konsolenanwendung werden oder?

Sieht eher nicht danach aus. JTextField und JOptionPane sind Swing Komponenten.

Allerdings macht es sich der Fragesteller dennoch kompliziert.

Aber wenigstens am Ball geblieben und weiter erklärt. Das ist ja schon mal was.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 13

Ich gehe jetzt direkt auf die letzten Kommentare zu dieser Frage ein.

Du kannst Integer.parseInt(); schon nutzen, jedoch bekommst du eine Exception, sofern es sich bei dem String den du parsen möchtest, nicht um eine Zahl handelt. Dem kannst du beispielsweise mit Regular-Expressions sehr einfach entgegen wirken.

Ich hab mal dein Beispiel erweitert und das im Code kommentiert.

http://pastebin.com/reX6rCkg

Kommentar von Rakozou ,

wie initialwert? ^^

und was bedeutet das : 

 (strsek2.matches("[0-9]")) ? ?
 

P.S. Das Programm ist fertig : http://pastebin.com/HUDFHEgP

Aber das von dir habe ich nicht bedacht, dass man das auch machen könnte. 

Kommentar von KnusperPudding ,
    min = (strmin.matches("[0-9]")) ? Integer.parseInt(strmin) : min;

hatte ich im Code-Kommentar erklärt.

Das ist die Kurzschreibweise für eine extrem einfache if-else Anweisung, d.h.:

Ist die Bedingung wahr: strmin.matches("[0-9]")  Also besteht der Stringwert ausschließlich aus Zahlen von 0-9

Dann wird die Variable: min mit Integer.parseInt(strmin); setzt.

Sonst dem Initialwert von min.

Damit löst du das Problem einer möglichen falschen Eingabe, sprich: Leer oder andere Zeichen werden keinen Fehler verursachen.

wie initialwert? ^^

Wenn du eine Variable deklarierst, kannst du sie auch gleich initialisieren, also ihr gleich einen Wert zuweisen z.B.:

int strmin = 0;

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten