Kommata in Punkten konvertieren

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Erstes Problem:
ich möchte das der applet benutzer in ein textfeld (awt) eine zahl eingeben kann z.B. 8,55.
und beim auslesen soll die zahl dann in 8.55 formatiert werden damit ich sie weiter verarbeiten kann.

Zweites Problem:

ich möchte das alle zahlen gerade untereinander stehen
Code:
        100,00 Euro
         50,00 Euro
        -22,00 Euro

die zahlen will ich mit drawString ausgeben und da ich nicht vorher weiss wie groß die zahl ist würde ich sie gerne rechtsbündig ausgeben.

So sieht das ganze bisher aus, aber ich gebe halt einen pixel vor und die zahlen wandern von links nach rechts
nicht umgekehrt wie es sein sollte.

sieht im moment noch so aus
Code:
        100,00 Euro
        50,00 Euro
        -2222,00 Euro


Code:
import java.awt.*;
import java.applet.*;
import java.text.DecimalFormat;

public class einsb extends Applet
{
     private int zwischenSumme = 10;

     public void paint(Graphics e)
     	{
		Font f = new Font("Courier", Font.PLAIN, 13);
		DecimalFormat df = new DecimalFormat("0.00 Euro");
		e.setFont(f);
		e.setColor(Color.black);
		e.drawString("  " + df.format(zwischenSumme), 280, 85);
          }
}
 
wie bau ich das hier ein die variable zwischenSumme soll z.B. 8.55 sein der benutzer soll aber 8,55 eintippen dürfen.
ich weiss nicht wie ich das umsetzen kann
Code:
public void actionPerformed(ActionEvent event)
     {
          if (event.getSource() == goButton)
          	{
               	fehler1 = 0;
                    fehler2 = 0;
                    fehler3 = 0;
               	try
                    {
                    zwischenSumme  = Float.parseFloat(anteilEingabe.getText());
                    }
                    catch (NumberFormatException e)
                    {
                    fehler1 = 1;
                    }
     }
[/code]
 
Also erst einmal zur Umwandlung:
Code:
DecimalFormat df = new DecimalFormat("#,###,##0.00");
try {
	System.out.println(df.parse("100"));
	System.out.println(df.parse("50"));
	System.out.println(df.parse("22"));
} catch (ParseException pe) {
	pe.printStackTrace();
}
In der Form kannst Du die Zahlen umwandeln. Für die Umwandlung in die andere Richtung musst Du halt noch Euro dran hängen. Die Ausrichtung rechtsbündig solltest Du über das Feld in der Oberfläche lösen. JTextField und JLabel lassen sich bspw. so einstellen, dass sie den Inhalt rechtsbündig darstellen.

Gast hat gesagt.:
wie bau ich das hier ein die variable zwischenSumme soll z.B. 8.55 sein der benutzer soll aber 8,55 eintippen dürfen.
ich weiss nicht wie ich das umsetzen kann
Code:
public void actionPerformed(ActionEvent event)
     {
          if (event.getSource() == goButton)
          	{
               	fehler1 = 0;
                    fehler2 = 0;
                    fehler3 = 0;
               	try
                    {
                    zwischenSumme  = Float.parseFloat(anteilEingabe.getText());
                    }
                    catch (NumberFormatException e)
                    {
                    fehler1 = 1;
                    }
     }
An der Stelle, an der Du
Code:
fehlder1 = 1;
stehen hast, würde ich einfach mit JOptionPane.showMessage(...) eine entsprechende Meldung an den Benutzer ausgeben lassen und dem entsprechenden Eingabefeld mit setFocus(true); den Fokus geben. Danach würde ich die Methode mit return verlassen.
Außerdem solltest Du das noch soweit umbauen:
Code:
DecimalFormat df = new DecimalFormat("#,###,##0.00");
try {
	zwischensumme = df.parse(jEingabefeld.getText()).floatValue();
} catch (ParseException pe) {
	// Hier kommt die Meldung & Co. hin.
}
 
danke, für eure hilfe, ich habe jetzt das als lösung gefunden. ist für mich am einfachsten
Code:
deFloat = aktuellEingabe.getText();
enFloat = deFloat.replaceAll(",",".");
aktuell = Float.parseFloat(enFloat);

jetzt kann ich sowohl punkt als auch komma eingeben und es geht ohne probleme
 
Achtung, das funktioniert nur so lange bis einer auf die Idee kommt, einen Punkt als 1000er Trennzeichen zu verwenden
Gruß
Raabun
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben