minack Geschrieben 5. November 2006 Geschrieben 5. November 2006 hallo! in der uni habe ich die aufgabe erhalten einen taschenrechner zu programmieren, der die additon, subtraktion, multiplikation und division von zahlen ermöglicht.... wir arbeiten mit eclipse und jigloo.... das fenster an sich habe ich bereits erstellt... es soll ungefähr so aussehen bzw das tut es ja:): zahl1 ------- zahl2------ ergebnis-------- buttons + - * : und nochmal 2buttons: neu beenden ok so sieht das fenster bereits aus ich hoffe man kann sich ungefähr vorstellen, wie es gemeint ist... mein problem liegt nun an den buttons...ich weiss nicht, wie man nun die rechnung programmiert... zudem weiss ich nicht, wie man den buttons sagt, dass sie es quasi "durchführen" sollen! ich hoffe man kann mir schnell helfen.... danke im voraus! Zitieren
Eytibi Geschrieben 6. November 2006 Geschrieben 6. November 2006 Das Sticvhwort heißt Listener. Die Buttons brauchen einen ActionListener. Diese ActionListener haben Methoden (z.B. onClicked) in denen du die Berechnung durchführen lassen kannst. Zitieren
ksg9-sebastian Geschrieben 6. November 2006 Geschrieben 6. November 2006 1. die zwei Zahlen einlesen und überprüfen, dazu anschauen: -JTextField#getText -Double.parseDouble(String s) throws NumberFormatException 2. auf die Buttonklicks reagieren, dazu anschauen: -JButton#addActionListener(ActionListener a) -Anonyme Klasse, innere Klassen 3. Werte berechnen und ausgeben -Operatoren in Java(+, -, *, /) -String.valueOf(double d) -JTextField#setText(String s) Mit den drei Sachen kannst kannst du den Rechner komplett programmieren. Allgemeiner Ablauf (egal welche Rechenart): Vor der Berechnung: - Zahl 1 einlesen und von String in double wandeln - Zahl 2 einlesen und von String in double wandeln Nach der Berechnung: - Ergebniss in Textfeld schreiben Diese beiden Dinge würde ich in separate Funktionen auslagern, sowas z.B. public double getZahlEins() throws NumberFormatException{ String z1 = textFieldZahlEins.getText(); return Double.parseDouble(z1); } public double getZahlZwei() throws NumberFormatException{ String z2 = textFieldZahlZwei.getText(); return Double.parseDouble(z2); } public void setErgebniss(double zahl){ txtErgebniss.setText(String.valueOf(zahl)); } Dann eben die Actionlistener und Rechnungsfunktionen public static final int PLUS = 0; public static final int MINUS = 1; public static final int MAL = 2; public static final int GETEILT = 3; public void buttonGeklickt(int rechenart){ try{ setErgebniss(berechne(getZahlEins(), getZahlZwei(), rechenart)); } catch(NumberFormatException nfe){ JOptionPane.showInformationMessage(null, "Keine gültige Zahl eingegeben"); } } public double berechne(double z1, double z2, rechenart){ switch(rechenart){ case PLUS: return z1 + z2; break; case MINUS: return ..; break; case MAL: return ..; break; case GETEILT: return ..; break; default: return 0; } } Dan noch die Listener buttonPlus.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ buttonGeklickt(PLUS); } }); buttonMinus.addActionListener(.. buttonMal.addActionListener(.. buttonGeteilt.addActionListener(.. Gruß sebastian Zitieren
BenjieAul Geschrieben 6. November 2006 Geschrieben 6. November 2006 Wollte noch hinzufügen, dass du dran denken musst den ActionListener auch zu implementieren Zitieren
zamboo_cgn Geschrieben 14. November 2006 Geschrieben 14. November 2006 import java.io.*; import java.util.regex.*; /** Calculate 1.4 ; Einfacher Taschenrechner im Selbstbau. * Dieser Taschenrechner ermöglicht es auf Konsolenebene zu addieren, subtrahieren, multiplizieren, dividieren, potenzieren * und auch die Wurzeln aus einer gegeben Basiszahl zu ziehen. * * @author Philipp Maihoefer * @version 1.4 */ public class Calculate { /** * * @return Gibt "number.trim" als getrimmten String zurück */ public static String eingabe(String input) { Pattern p = Pattern.compile(input); String number = new String(); boolean repeat = true; while(repeat) { try { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); number = in.readLine(); Matcher m = p.matcher(number); repeat = !m.matches(); } catch ( IOException ioe) { System.out.println(ioe); } } return number.trim(); } /** * * @param args Eingaben des Benutzers */ public static void main(String[] args) { boolean repeat = true; while (repeat) { /** * Eingabe der ersten Zahl */ System.out.println( "Erste Zahl? Basiszahl bei Potenzierung. \n Bei Quadratwurzel bitte \"q\" an die Zahl anhaengen." ); String strinGenA = eingabe("^[0-9]{1,}[\\.]?[0-9]?{1,}[q]?"); /** * Überprüfung ob die Quadratwurzel gezogen werden soll. */ if(strinGenA.endsWith("q")) { int length = strinGenA.length(); strinGenA = strinGenA.substring(0, length-1); Double zahlDblA = Double.parseDouble(strinGenA.trim()); System.out.println(Math.sqrt(zahlDblA)); } else { Double zahlDblA = Double.parseDouble(strinGenA.trim()); /** * Eingabe der zweiten Zahl */ System.out.println("Zweite Zahl? Oder Potenz?"); String strinGenB = eingabe("^[0-9]{1,}[\\.]?[0-9]?{1,}"); Double zahlDblB = Double.parseDouble(strinGenB.trim()); /** * Eingabe der Rechenmethode */ System.out.println("Addieren(+) / Subtrahieren(-) / Multiplizieren(*) / Dividieren( / Potenzieren (p)?"); String StringOper = eingabe("[-:\\*\\+p]*"); System.out.println("Das Ergebnis ist:"); /** * Überprüfung ob Division durch 0 gewünscht. */ if(StringOper.equals(":")&&zahlDblB.equals(0.0)) System.out.println("Division durch \"0\" nicht möglich."); else { /** * Auswahl der Rechenmethode */ if(StringOper.equals("+")) System.out.println(zahlDblA + zahlDblB); else if(StringOper.equals("-")) System.out.println(zahlDblA - zahlDblB); else if(StringOper.equals("*")) System.out.println(zahlDblA * zahlDblB); else if(StringOper.equals(":")) System.out.println(zahlDblA / zahlDblB); else if(StringOper.equals("p")) System.out.println(Math.pow(zahlDblA, zahlDblB)); else System.out.println("Ungueltiger Operator. Kann die Berechnung nicht durchfuehren."); } } /** * Wiederholung gewünscht? */ System.out.println("Nochmal (j/n)?"); String StringRep = eingabe("[jn]"); if (StringRep.equals("n")) repeat = false; } System.out.println("Vielen Dank! - Philipp Maihoefer '06"); } } [/code] Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.