Java Taschenrechner (Division und Graphische Oberfläsche?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo 

Du scanst die Double Werte mit nextInt. So werden jeweils die Gannzzahlwerte genommen. Versuche es mit nextDouble.

Um die Eingabe zu optimieren suchst du am besten ein Tutorial, davon gibt es viele. 

Woher ich das weiß:Berufserfahrung – Studium mit Schwerpunkt Java und 5+ Jahre Berufserfahrung
timi042 
Fragesteller
 19.01.2016, 08:01

Danke, das mit nextDouble hat funktioniert! Ich kann jetzt 50/100 rechnen und erhalte 0.5

2

Nachdem die bereits gegebenen Antworten sehr gut sind und auch bereits einen Großteil deiner Fragen beantworten, würde ich den Punkt mit der Graphischen Oberfläche noch ergänzen:

Persönlich bin ich der Meinung, dass du dir in der heutigen Zeit AWT und Swing fast sparen kannst, da für Grafische Oberflächen der Code wirklich grausam sein kann und auch veraltet ist. - Ich tendiere da eher zu JavaFX. Da ist sowohl die Gestaltung per Code als auch per Designer möglich. 

Ich würde dir daher eher raten, schau dir mal JavaFX an. 

timi042 
Fragesteller
 19.01.2016, 08:59

JavaFX ist das mit in Eclipse enthalten?
Denn ich habe das kleine "Program" mit Eclipse geschrieben.
Wenn ja wie sieht der Anfang in JavaFX aus?

0
KnusperPudding  19.01.2016, 09:16
@timi042

JavaFX hat nichts mit Eclipse zu tun in dem Sinne. JavaFX ist seit Java7 enthalten. Demnach solltest du einfach nur sicherstellen welches JDK du verwendest. 

Zur Frage wie du das Anfängst: 

Du erstellst eine Klasse die von Application ableitet:

extends Application

bei Application handelt es sich um eine Abstrakte Klasse, bei der du die Methode start implementieren musst. - In der Main-Methode brauchst du dann nur noch die launch Methode zu starten, die in Application enthalten ist.

Mag sein, dass es sich für einen Anfänger jetzt kompliziert anhört, aber hier ein Beispiel Hallowelt-Programm:

http://pastebin.com/NwVYUhDn

0

1) Du kannst ein Array oder eine Liste machen für deine Variablen und in einer Schleife jeweils mit dem Scanner befüllen, dann brauchst du den Code nur einmal

2) Versuchs mal mit 

w = (double)g / (double)h;

Ich glaube der Kompiler rechnet deine int-Werte aus (100 passt 0 mal in 50) und speichert dann das Ergebnis in einem Double...

3) Grafische Oberfläche...Da kannst du ja einen ganz normalen Taschenrechner Abbilden eigentlich, mit Buttons für die Tasten und so...oder natürlich ein Feld, indem du einen Term eingibst und den im Code auseinanderplückst. Schau dir mal Swing und AWT an :)

severin83  19.01.2016, 07:57

Der Cast von g und h ist nicht nötig wenn man nextDouble verwendet. Ansonsten top :)

2
timi042 
Fragesteller
 19.01.2016, 08:04
@severin83

Danke. Ich werde mich mal über Arrays belesen und schauen wie ich meine Eingabe optimieren kann. Gibt es eine Möglichkeit das mein Programm erkennt welche Rechenoperation es nun verwenden soll? Also so das z.B. meine STandartformel a und b sind und das programm erennt bei der Eingabe von + - * / was es tun soll?

Was bedeutet AWT ausgeschrieben? :)

0
MrKnowIt4ll  19.01.2016, 08:25
@timi042

Da wirst du wohl alle Fälle einzeln abfangen müssen :) Also der Benutzer gibt einen Term ein, du trennst den dann auf, hast einmal A, einmal B und in der Mitte die Rechenoperation. Die musst du selber auswerten und dann rechnen. AWT steht glaub' für "Abstract Window Toolkit"

1
MrKnowIt4ll  19.01.2016, 08:25
@severin83

Stimmt, super! Ich dachte nur, es sollen mit Absicht int's eingelesen werden, und für die Division ist halt dann zwangsläuftig ein double nötig, aber klar! Wenn's keine Einwände gibt, ist nextDouble perfekt.

1