Alles ignorieren ausser Zahlen

Status
Nicht offen für weitere Antworten.

Reality

Top Contributor
Hi,
ich will nen kleinen Taschenrechner bauen und da kann ich kein "+" in eine Variable speichern, also habe ich folgenden Ansatz gemacht:

Code:
  StringBuffer get= new StringBuffer();
  for(short i=0; i<tfEingabe.getText().length(); i++) 
    if(tfEingabe.getText().charAt(i)>='0' && tfEingabe.getText().charAt(i)<='9')
      get.append(i);
  
  int rechnung= Integer.parseInt(get.toString());
  tfEingabe.setText(rechnung+" klappt");
Das ist natürlich nur ein Ansatz.
Mein Problem ist, dass entweder die falschen Zahlen ausgegeben werden oder sie werden nicht komplett ausgegeben.

Sieht jemand den Fehler?!

Liebe Grüße
Reality
 

K-Man

Bekanntes Mitglied
Die for-Schleife musst du zunächst mal rückwerts laufen lassen, sonst ist dein Ergebnis spiegelverkehrt...
Zu deinem anderen Problem schau ich mal schnell nach ;)

Edit:
Vergiss meinen Beitrag...;)
 

K-Man

Bekanntes Mitglied
Man sieht den Wald vor lauter Bäumen nicht ;)
Du darfst nicht i adden, sondern deinen char aus dem Textfeld ;)
Code:
   StringBuffer get= new StringBuffer();
  for(short i=0; i<tfEingabe.getText().length(); i++)
    if(tfEingabe.getText().charAt(i)>='0' && tfEingabe.getText().charAt(i)<='9')
      get.append(tfEingabe.getText().charAt(i));
 
  int rechnung= Integer.parseInt(get.toString());
  tfEingabe.setText(rechnung+" klappt");
 

K-Man

Bekanntes Mitglied
Übrigens noch einen Tipp für größere Schleifen...:
Code:
for(short i=0, n=tfEingabe.getText().length(), i <n; i++) // va bei großen Mengen viel effizienter...
 

Reality

Top Contributor
Eins ist mir aufgefallen.
Manchmal kommt eine NumberFormatException wie z.B. in diesem Fall:

Ich habe folgendes eingegeben:
sdf489sd498498a4sd6

java.lang.NumberFormatException: For input string: "48949849846"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

at java.lang.Integer.parseInt(Integer.java:480)

at java.lang.Integer.parseInt(Integer.java:518)

at Taschenrechner.berechnen(Taschenrechner.java:29)

at Taschenrechner.actionPerformed(Taschenrechner.java:37)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)

at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)

at java.awt.Component.processMouseEvent(Component.java:5100)

at java.awt.Component.processEvent(Component.java:4897)

at java.awt.Container.processEvent(Container.java:1569)

at java.awt.Component.dispatchEventImpl(Component.java:3615)

at java.awt.Container.dispatchEventImpl(Container.java:1627)

at java.awt.Component.dispatchEvent(Component.java:3477)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)

at java.awt.Container.dispatchEventImpl(Container.java:1613)

at java.awt.Window.dispatchEventImpl(Window.java:1606)

at java.awt.Component.dispatchEvent(Component.java:3477)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

java.lang.NumberFormatException: For input string: "48949849846"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

at java.lang.Integer.parseInt(Integer.java:480)

at java.lang.Integer.parseInt(Integer.java:518)

at Taschenrechner.berechnen(Taschenrechner.java:29)

at Taschenrechner.actionPerformed(Taschenrechner.java:37)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)

at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)

at java.awt.Component.processMouseEvent(Component.java:5100)

at java.awt.Component.processEvent(Component.java:4897)

at java.awt.Container.processEvent(Container.java:1569)

at java.awt.Component.dispatchEventImpl(Component.java:3615)

at java.awt.Container.dispatchEventImpl(Container.java:1627)

at java.awt.Component.dispatchEvent(Component.java:3477)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)

at java.awt.Container.dispatchEventImpl(Container.java:1613)

at java.awt.Window.dispatchEventImpl(Window.java:1606)

at java.awt.Component.dispatchEvent(Component.java:3477)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

Wieso kommt das?!

EDIT: Kommt eigentlich nur, wenn der String zu lang ist, denke ich.

Liebe Grüße
Reality
 

Reality

Top Contributor
Hi,
ich bin´s nochmal.
Wie kann ich das Pluszeichen das in einem String oder Char gespeichert ist für Integer gültig machen?
Bei char geht es zwar, aber es gibt mir nur den ASCII-Code heraus.

Liebe Grüße
Reality
 

Reality

Top Contributor
Wieso geht das eigentlich nicht auf?!
Code:
String get= tfEingabe.getText();
  StringBuffer form= new StringBuffer();
  int rechnung= 0;
  
  for(short i=0; i<get.length(); i++){
    if (get.charAt(i) >= '0' && get.charAt(i) <= '9'){
      form.append(tfEingabe.getText().charAt(i));
    }
      
    else if (get.charAt(i)=='+')
      rechnung += Integer.parseInt(form.toString());
  }
  
  if(rechnung!=0)
    tfEingabe.setText(Integer.toString(rechnung));
  
  else
    tfEingabe.setText(form.toString());

Liebe Grüße
Reality
 

K-Man

Bekanntes Mitglied
Weil du nicht addierst, sondern nur den String in einen int umwandelst...
Also Eingabe; 10 + 15
StringBuffer enthält 1015:

Integer.parseInt(form.toString()) ergibt also: 1015...da wird nix addiert.

Mach es mit einem Stack ;) Kannst es auch gleich üben ;)
Wandle deine Eingabe in postFix um und packe die Werte und Rechenzeichen in zwei Stacks.
Dann gehst du von oben nach unten durch und führst das letzte Rechenzeichen an den letzten beiden Werten aus und fügst das Ergebnis wieder in den Stack...so macht es der Computer....es gibt sicher einige Links zu diesem Thema, komme aber grad von ner Disco und bin jetzt nicht mehr in der Lage zu suchen :lol:
 

Reality

Top Contributor
Hi,
doch, addieren tu ich schon mit dem Code:
Code:
rechnung += Integer.parseInt(form.toString());
Nur ist rechnung eben vorher als 0 initialisiert und darum bringt es nichts. :bloed:

Das mit dem Stack kann ich erst später ausprobieren, weil das in meinem Buch erst nach ca. 12 Seiten drankommt. :D

Liebe Grüße
Reality
 
J

Jens

Gast
Ich glaube, du musst den Stringbuffer nach dem addieren leeren:
Code:
form.setLength(0);
Danach kann dein Stringbuffer die nächsten Zahlen aufnehmen.

Viele Grüße
Jens
 
J

Jens

Gast
Na Hossa.
Habs aber so getestet. Ging astrein.

probier nochmal.

Grüße
Jens
 
J

Jens

Gast
Hi Reality.

Hier der getestete Code:
Code:
String get= tfEingabe.getText(); 
StringBuffer form= new StringBuffer(); 
int rechnung= 0; 
	  
for(short i=0; i<get.length(); i++) 
{ 
    if (get.charAt(i) >= '0' && get.charAt(i) <= '9') { 
        form.append(tfEingabe.getText().charAt(i)); 
    } else {
        if (get.charAt(i)=='+') 
        rechnung += Integer.parseInt(form.toString()); 
        form.setLength(0);
    }
} 
		
if (form.length() > 0)
    rechnung += Integer.parseInt(form.toString());
		
if(rechnung!=0) 
    tfEingabe.setText(Integer.toString(rechnung)); 
else 
    tfEingabe.setText(form.toString());

Ich vermute, dass deine Klammersetzung nicht ganz koscha ist.
Bei mir funzte es mit deinem Code zunächst auch nicht. Erst, als ich die Klammern wie oben gesetzt hatte, lief alles problemlos.

Viele Grüße
Jens
 

Reality

Top Contributor
Hi Jens,
danke so funktioniert es! :)
Du hast mir jedoch diesen Code vorenthalten:
Code:
  if (form.length() > 0)
    rechnung += Integer.parseInt(form.toString());

Das wird jedoch schwierig, wenn ich nun auch "-", "/" und "*" verwende.
Aber danke für den Ansatz! :)

Liebe Grüße
Reality
 

Kaffeetrinker

Neues Mitglied
Hi Reality.

Inzwischen hab ich mich im Board registriert. Meine letzten Postings habe ich als 'Jens' geschrieben.

Besonders schwer wirds, wenn du auch noch Klammern und Potenzen rechnen willst.

Ich würde den String zunächst zerlegen, Klammern zusammenfassen, Punkt- vor Strichrechnung und danach alles nach und nach zusammenrechnen. Puuh. Oder nur eine einzelne Operation zulassen. :autsch:

Viel Erfolg trotzdem.
Viele Grüße
Jens
 

Reality

Top Contributor
Hi, danke für eure Antworten!
Jetzt wo ich so überlege... Wäre das alles nicht mit ArrayList viel einfacher?!

Liebe Grüße
Reality
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
KyZarr Was brauche ich alles? Java Basics - Anfänger-Themen 2
M Get Methode alles einzeln? Java Basics - Anfänger-Themen 6
P Alles eine Typfrage Java Basics - Anfänger-Themen 7
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
I Erste Schritte Resource Bundle - Alles in einem File oder mehrere? => Faktor Performance Java Basics - Anfänger-Themen 2
B Schulprojekt mit Java, was kann man alles programmieren? Java Basics - Anfänger-Themen 5
V Was soll alles in den Konstruktor? Java Basics - Anfänger-Themen 3
K JButton alles zurücksetzen Java Basics - Anfänger-Themen 1
E ExecutorService warten bis alles fertig? Java Basics - Anfänger-Themen 5
J Frage zum Thema ... alles mögliche! Java Basics - Anfänger-Themen 6
Anfänger2011 Wie bricht man alles ab wenn eine Bedingung nicht erfüllt ist? Java Basics - Anfänger-Themen 21
J Kann man auch alles in einer Klasse schreiben? Java Basics - Anfänger-Themen 2
D setAlwaysOnTop(true); toFront(); - bringt alles nichts Java Basics - Anfänger-Themen 5
I Was gehört alles in eine Softwaredokumentation? Java Basics - Anfänger-Themen 4
M MergeSort - Threads in Anwendung bremsen alles! Java Basics - Anfänger-Themen 4
M nach dem Minimieren is alles wech.... Java Basics - Anfänger-Themen 7
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Regulärer Ausdruck - alles was keine Zahl ist entfernen Java Basics - Anfänger-Themen 2
G Zufallszahlen die alles einmal vorkommen Java Basics - Anfänger-Themen 15
D Es wird nicht alles angezeigt Java Basics - Anfänger-Themen 4
M Was brauch ich alles für Java Programmieren Java Basics - Anfänger-Themen 14
G Einfügen aus Zwischenablage - alles doppelt? Java Basics - Anfänger-Themen 2
G kann man alles mögliche in Obect kapseln? Java Basics - Anfänger-Themen 2
K Programm tut nicht alles, was es soll Java Basics - Anfänger-Themen 3
P Was brauche ich alles um mit Java loszulegen Java Basics - Anfänger-Themen 24
2 Alles Selektieren in JEditorPane Java Basics - Anfänger-Themen 5
G regulärer Ausdruck alles was zwischen ' ' steht Java Basics - Anfänger-Themen 4
G textfield überdeckt alles Java Basics - Anfänger-Themen 3
I Drucker fragen, ob alles in ordnung Java Basics - Anfänger-Themen 3
V was alles ins Userinterface? Java Basics - Anfänger-Themen 3
D Einmal Runden ohne alles Java Basics - Anfänger-Themen 7
C GregorianCalendar glaubt mir alles wieso! Java Basics - Anfänger-Themen 12
I ImageIO.write(bild, "was gibts da alles", pfad); Java Basics - Anfänger-Themen 6
G Paint Methode löscht alles Java Basics - Anfänger-Themen 4
G Was brauch ich alles Java Basics - Anfänger-Themen 7
M JTextField auf anklickern alles wech? Java Basics - Anfänger-Themen 12
M j2ee: was braucht es alles dazu? Java Basics - Anfänger-Themen 3
A Was kann Java alles? Java Basics - Anfänger-Themen 22
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I No Jakarta Enterprise Beans found with interface ignorieren? Java Basics - Anfänger-Themen 2
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
B Regex ignorieren von Groß - Kleinschreibung Java Basics - Anfänger-Themen 1
CptK Datentypen String splitten, ä,ö,ü, etc ignorieren Java Basics - Anfänger-Themen 1
B String: Groß- und Kleinschreibung ignorieren bei Contains? Java Basics - Anfänger-Themen 2
T split innerhalb Klammern ignorieren? Java Basics - Anfänger-Themen 6
V Schlüsselworte Befehl Ignorieren? Java Basics - Anfänger-Themen 10
M String vergleichen - Leerzeichen Ignorieren? Java Basics - Anfänger-Themen 4
B .ut dateien ignorieren und fortsetzen Java Basics - Anfänger-Themen 9
B DTD. umgehen/ignorieren Java Basics - Anfänger-Themen 3
C Methoden Rückgabewert von statischer Methode ignorieren Java Basics - Anfänger-Themen 8
B Duplicate Entry Ignorieren? Java Basics - Anfänger-Themen 2
J Regex um Inhalte zwischen Tags zu ignorieren Java Basics - Anfänger-Themen 2
I Wie Tastatureingaben ignorieren? Java Basics - Anfänger-Themen 7
S Array sortieren NULL oder Empty ignorieren. Java Basics - Anfänger-Themen 9
Developer_X Geerbte Methoden ignorieren Java Basics - Anfänger-Themen 5
M Scanner String Eingaben ignorieren Java Basics - Anfänger-Themen 4
D Datei einlesen, zeilen ignorieren, probleeem Java Basics - Anfänger-Themen 7
M Strings: Groß-Kleinschreibung ignorieren Java Basics - Anfänger-Themen 6
S Benutzereingabe - Gross und Kleinschreibung ignorieren Java Basics - Anfänger-Themen 7
M Event auslösen (unsinnig gestellt - ignorieren) Java Basics - Anfänger-Themen 4
S In einer CSV Datei leere Zeilen ignorieren Java Basics - Anfänger-Themen 6
M Warnungen in Eclipse übergehen oder ignorieren Java Basics - Anfänger-Themen 4
M Files löschen - alle, ausser das größte! Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben