#1 26. Oktober 2010 Komma in Textfeld eingeben Habe hier ein kleines Programm geschrieben das eine betrag abzüglich %-te ausgibt... Nun würde ich gerne noch bewerkstelligen, dass man auch kommazahlen eingeben kann...statt mit einem punkt ... wie kann ich das lösen? Code: package taschenrechner; import java.awt.*; import java.awt.event.*; import java.util.Locale; import java.lang.Object; import java.text.Format; import java.text.NumberFormat; import java.text.DecimalFormat; public class Main extends Frame implements ActionListener { TextField Eingabe_betrag; Label Betrag, Ergebnisausgabe2, Ergebnisausgabe3, copyright, DreiProzent, ZweiProzent; Button Ausgabe; double var,erg2, erg3; public static void main(String[] args) { Main wnd = new Main(); wnd.setSize(340,200); wnd.setLocation(700,300); } public Main() { super("Skontorechner"); setBackground(Color.orange); addWindowListener(new WindowClosingAdapter11(true)); GridBagLayout Fenster = new GridBagLayout(); GridBagConstraints Konstante; Font font = new Font("System", Font.BOLD, 22); Font font1 = new Font("Arial", Font.BOLD, 18); setLayout(Fenster); setResizable(false); Betrag = new Label("Betrag: "); Betrag.setFont(font1); Eingabe_betrag = new TextField(); copyright = new Label("© Thomas Ritter"); Ausgabe = new Button("Ausgeben"); ZweiProzent = new Label("2%: "); ZweiProzent.setFont(font1); DreiProzent = new Label("3%: "); DreiProzent.setFont(font1); Ergebnisausgabe2 = new Label(); Ergebnisausgabe2.setFont(font); Ergebnisausgabe2.setForeground(Color.red); Ergebnisausgabe3 = new Label(); Ergebnisausgabe3.setFont(font); Ergebnisausgabe3.setForeground(Color.red); Konstante = makegbc(0, 0, 1, 1); Konstante.weightx = 10; Konstante.weighty = 50; Konstante.fill = GridBagConstraints.NONE; Fenster.setConstraints(Betrag, Konstante); add(Betrag); Konstante = makegbc(1, 0, 1, 1); Konstante.weightx = 50; Konstante.weighty = 100; Konstante.ipadx = 20; Konstante.fill = GridBagConstraints.NONE; Fenster.setConstraints(Eingabe_betrag, Konstante); add(Eingabe_betrag); Konstante = makegbc(2, 0, 2, 1); Konstante.weightx = 50; Konstante.weighty = 50; Konstante.fill = GridBagConstraints.HORIZONTAL; Fenster.setConstraints(Ausgabe, Konstante); add(Ausgabe); Konstante = makegbc(1, 1, 1, 1); Konstante.weightx = 50; Konstante.weighty = 100; Konstante.fill = GridBagConstraints.NONE; Fenster.setConstraints(ZweiProzent, Konstante); add(ZweiProzent); Konstante = makegbc(1, 2, 1, 1); Konstante.weightx = 50; Konstante.weighty = 100; Konstante.fill = GridBagConstraints.NONE; Fenster.setConstraints(DreiProzent, Konstante); add(DreiProzent); Konstante = makegbc(2, 1, 1, 1); Konstante.weightx = 100; Konstante.weighty = 50; Konstante.fill = GridBagConstraints.HORIZONTAL; Fenster.setConstraints(Ergebnisausgabe2, Konstante); add(Ergebnisausgabe2); Konstante = makegbc(2, 2, 1, 1); Konstante.weightx = 100; Konstante.weighty = 50; Konstante.fill = GridBagConstraints.HORIZONTAL; Fenster.setConstraints(Ergebnisausgabe3, Konstante); add(Ergebnisausgabe3); Konstante = makegbc(1, 4, 2, 1); Konstante.weightx = 100; Konstante.weighty = 100; Konstante.fill = GridBagConstraints.HORIZONTAL; Fenster.setConstraints(copyright, Konstante); add(copyright); Ausgabe.addActionListener(this); this.Eingabe_betrag.addKeyListener (new KeyAdapter() { public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_ENTER) { var = new Double(Eingabe_betrag.getText()); erg3 = var - (var * 0.03); erg2 = var - (var * 0.02); Ergebnisausgabe2.setText(""+erg2+" €"); Ergebnisausgabe3.setText(""+erg3+" €"); } } } ); setVisible(true); pack(); } private GridBagConstraints makegbc( int x, int y, int width, int height) { GridBagConstraints Konstante = new GridBagConstraints(); Konstante.gridx = x; Konstante.gridy = y; Konstante.gridwidth = width; Konstante.gridheight = height; Konstante.insets = new Insets(1, 1, 1, 1); return Konstante; } public void actionPerformed(ActionEvent event) { Object source = event.getSource(); var = new Double(Eingabe_betrag.getText()); if(source==Ausgabe) { erg3 = var - (var * 0.03); erg2 = var - (var * 0.02); Ergebnisausgabe2.setText(""+erg2+" €"); Ergebnisausgabe3.setText(""+erg3+" €"); } } } + Multi-Zitat Zitieren
#2 26. Oktober 2010 AW: Komma in Textfeld eingeben Du kannst ja den eingegangen String auf Zeichen überprüfen .. sollte das gewünschte Zeichen enthalten sein, dann wandelst du es einfach intern um. Also: Benutzer gibt ein: ,, 13,13 " Intern wird nach dem Zeichen "," im String gesucht, wenn gefunden, wird das Zeichen in einen "." umgewandelt, damit du intern damit rechnen kannst. Um einen String bearbeiten zu können, brauchst du einen StringBuffer. So solltest du es eigentlich selbst lösen können. Es geht auch einfach(er) so... Bisschen PseudoCode: Code: public class tt { public static void main(String[] args) { String s = ",blah"; System.out.println(s.replace(",", ".")); } } // edit: mit deinen Bezeichnungen etc. solltest du aufpassen, weil du dich nicht an den Standard hälst^ + Multi-Zitat Zitieren
#3 26. Oktober 2010 AW: Komma in Textfeld eingeben ich hab leider keine ahnung wie ich das jetzt in meinen code einbauen soll ... habe gerade mit replace versucht, jedoch kann ich trotzdem dann nichts eingeben mit komma ... gibt er nicht mal den string aus der eingeben wurde :/ + Multi-Zitat Zitieren
#4 26. Oktober 2010 AW: Komma in Textfeld eingeben Zeile 160: Anstatt: Code: var = new Double(Eingabe_betrag.getText()); machste: Code: var = new Double(Eingabe_betrag.getText().replace(",", ".")); Und schon biste fertig... jetzt kannste sowohl . als auch , eingeben. Dein Code ist sehr komisch..^^..in 2Tagen blickst du 100% selbst nicht mehr durch den Code durch... gewöhn dir das mal fix ab. + Multi-Zitat Zitieren
#5 27. Oktober 2010 AW: Komma in Textfeld eingeben doch blick ich schon weil ich den code von nem prog aus meiner schulzeit vor nem jahr ausgegraben hab und nur umgeschrieben dann .... aber was sollte ich ändern, dass es passt? (Namenskonvetionen weiß ich, mach ich ) edit: geht übrigens, danke .... jetzt müsst ich noch wissen wie ich das ganze auf 2 stellen runden kann ... hab BigDecimal myDec = new BigDecimal( erg2 ); myDec = myDec.setScale( 2, BigDecimal.ROUND_HALF_UP ); versucht ... klappt aber iwie nicht :/ + Multi-Zitat Zitieren
#6 28. Oktober 2010 AW: Komma in Textfeld eingeben Code: NumberFormat n = NumberFormat.getInstance(); n.setMaximumFractionDigits(2); System.out.println(n.format(doubleValue)); + Multi-Zitat Zitieren
#7 28. Oktober 2010 AW: Komma in Textfeld eingeben habs so einfügt: Code: NumberFormat n = NumberFormat.getInstance(); n.setMaximumFractionDigits(2); Ergebnisausgabe2.setText(""+n.format(erg3)+" €"); funktioniert aber leider nicht ... + Multi-Zitat Zitieren
#8 28. Oktober 2010 AW: Komma in Textfeld eingeben Kann es sein, dass du gar kein Grundwissen hast bzw. nicht in der Lage bist einfache beispiele um zu setzen? Was funktioniert denn nicht? Mit dem Satz "funktioniert nicht" kann hier niemand was anfangen. Gib uns mal ne Fehlermeldung + Multi-Zitat Zitieren
#9 28. Oktober 2010 AW: Komma in Textfeld eingeben meine grundkenntnisse halten sich sehr in grenzen ... wie gesagt is ne weile her und war auch nur in der schule immer ... hab sonst nie was daheim noch gemacht ... es kommt keine fehlermeldung ... syntaktisch ist alles richtig ... nur im programm wirds halt nicht gerundet dann.. + Multi-Zitat Zitieren
#10 28. Oktober 2010 AW: Komma in Textfeld eingeben wo ist das problem bei google "java +round" einzugeben ?? myDouble = Math.round( myDouble * 100. ) / 100.; + Multi-Zitat Zitieren
#11 28. Oktober 2010 AW: Komma in Textfeld eingeben ok funktioniert danke.......aber er rundet mir jetzt immer auf ganze zahlen ... wie kann ich auf 2 stellen runden? + Multi-Zitat Zitieren
#12 28. Oktober 2010 AW: Komma in Textfeld eingeben Hast du vllt. den Punkt nach der letzten 100 vergessen? + Multi-Zitat Zitieren
#13 28. Oktober 2010 AW: Komma in Textfeld eingeben ah ok jap hab die punkte vergessen ... thx + Multi-Zitat Zitieren