[Java] Anfängerprobleme (Taschenrechner^^)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von DSpirit, 12. September 2007 .

Schlagworte:
  1. 12. September 2007
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Anfängerprobleme (Taschenrechner^^)

    Also da ich mich jetz mal mit Java beschäftigen wollte hab ich natürlich gleich mal versuch einen Taschenrechner zu programmieren.
    Das hat auch in der Konsoleneben ganz gut funktioniert aber ich benutze jetzt Netbeans nach langem hin und her (Eclipse, BlueJ...)
    So das meiste hab ich schon nur an der Ergebnis Abfrage stimmt noch was nicht.
    Ich hab leider keine Ahnung an was das liegt also will ich euch mal fragen hier das Projekt:
    https://xup.in/dl,34420902/http:xupraidrushwsdownloadphpvalid1id9d221f289f9249065246f85365e27.rar/

    Wäre euch sehr dankbar.
     
  2. 12. September 2007
    AW: Anfängerprobleme (Taschenrechner^^)

    Moin,
    das Problem ist die Methode parseFloat()

    Bei der gibt's nämlich eine Exception....und derRest der Methode wird gar nicht erst ausgeführt...
    Spoiler
    Code:
    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
     at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:994)
     at java.lang.Float.parseFloat(Float.java:422)
     at JCalc.jButton10ActionPerformed(JCalc.java:259)
     at JCalc.access$900(JCalc.java:11)
     at JCalc$10.actionPerformed(JCalc.java:114)
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
     at java.awt.Component.processMouseEvent(Component.java:6038)
     at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
     at java.awt.Component.processEvent(Component.java:5803)
     at java.awt.Container.processEvent(Container.java:2058)
     at java.awt.Component.dispatchEventImpl(Component.java:4410)
     at java.awt.Container.dispatchEventImpl(Container.java:2116)
     at java.awt.Component.dispatchEvent(Component.java:4240)
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
     at java.awt.Container.dispatchEventImpl(Container.java:2102)
     at java.awt.Window.dispatchEventImpl(Window.java:2429)
     at java.awt.Component.dispatchEvent(Component.java:4240)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    

    Es liegt an der Formatierung des Strings den du versuchst in einen String umzuformen...

    Gültige Fließkommazahlen sind:

    3.14
    2f
    1e1
    .5f
    6.

    Du kannst ja mal selber versuchen die Zahlen von Hand einzutippen, aber immer einen Punkt hinter schreiben.....
    Dann funzt es....

    Greetz
     
  3. 13. September 2007
    AW: Anfängerprobleme (Taschenrechner^^)

    ok thx aber wie kann ich das ändern?
    Ich hab schon versuct das float mit integer oder double zu ersetzen aber immer dasselbe.
    Wenn ich einen Punkt hinnter die Zahlen schreibe kann ich zwar addieren und subtrahieren aber den Rest nicht.
    bw hast du
     
  4. 13. September 2007
    AW: Anfängerprobleme (Taschenrechner^^)

    Hmmm

    Eine einfache, schnelle, funktionierende Lösung fällt mir im Moment nicht ein..
    Du kannst ja einfach bei einem ähnlichen Projekt bei Sourceforge ein bisschen spicken

    Ansonsten:
    Du könntest ja eine Variable einrichten, die die aktuelle Zahl enthält...
    Wenn man jetzt auf einen Button drückt, rechnet er die zur Variable hinzu....
    Dabei müsste man die bereits vorhandene Zahl*10 + neueZahl rechnen und dann muss man noch später KommaEingaben managen....

    Ist sicherlich nicht die beste Möglichkeit.... aber die einzige die mir einfällt...
    Je nachdem wie weit du gehen willst würde sie vlt auch reichen....

    Apropos: bei SourceForge gibts ein Projekt das auch JCalc heißt..deins? *g*

    Greetz
     
  5. 14. September 2007
    AW: Anfängerprobleme (Taschenrechner^^)

    Also danke,
    meine Idee wär jetzt folgende:
    Bei jeder Zahl die eingegeben wird speicher ich halt wie du gesagt hast diese in eine Variable 'var'.
    Beim drücken von einem Button wird dann die Zahl in eine andere variable 'var1' gespeichert und 'var' auf "" gesetzt, dasselbe nochmal und das Ergebnis ist dann 'var1' +/-... 'var'

    Würde das so funktionieren?

    Ne das is nich mein Projekt^^
    Am Anfang hatte ich Calculator dann JCalculator und jetzt JCalc^^ hört sich besser an

    mfg
     
  6. 14. September 2007
    AW: Anfängerprobleme (Taschenrechner^^)

    N'Abend

    Direkt so würde es nicht funktionieren weil du wenn du nacheinander 5 und 6 eingibst 11 rauskriegen würdest und nicht 56 wie du eigentlich wolltest.

    Also: (als Beispiel jetzt mit int)
    Code:
    int varLast; //die letzte ziffer , z.b. 6
    int varFull; //alle Ziffern , z.b. 5
    
    varFull = (varFull*10) + varLast; //also 5*10 +6 = 56
    
    Und wenn du mal mit Kommas arbeitest: (im Fall wenn z.B. varFull den Wert "56," ist)
    Code:
    varFull = varFull + (varLast /10 )
    Die 10 müsste entsprechend der Stelle geändert werden...

    Ich hab drüber nachgedacht und ich denke wenn das Programm später mal weitere Funktionen wie Wurzel ziehen etc. haben soll, würde es sich lohnen lieber einen Algorithmus zu schreiben, der den Term ausliest.....
    Wenn man aber bei den Grundrechenarten bleibt dürfte das hier wohl reichen...

    Meld dich ob's funzt...:]

    Greetz
     
  7. 21. September 2007
    AW: Anfängerprobleme (Taschenrechner^^)

    hi,
    mach die speicherung in ein array und addier einfach nach der drücken der = taste
    Code:
    //addn der tasten in die Arrayliste
    
    ArrayList<float> liste=new ArrayList<float>();
    JButton button0=new JButton("0");
    JButton ergebnis=new JButton("=");
    JTextfield anzeige=new JTextfield(10);
    
    public void actionPreformed(e){
     if(e.getSource==button0){
     liste.add(anzeige.getText());
     } 
    
     if(e.getSource==ergebnis){
     int summe;
     for(int i=0; i<liste.size()oder liste.length();i++){
     summe=sume+Float.parsFloat(liste.get(i));
     }
     anzeige.setText(summe);
     }
    
    }
    
    
    
    
    
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.