Zum Inhalt springen

taschenrechner unter java programmieren


Empfohlene Beiträge

Geschrieben

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!

Geschrieben

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.

Geschrieben

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

Geschrieben
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]

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...