Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Taschenrechner mit Java
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Taschenrechner mit Java
 
Autor Nachricht
sterndu1
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 14.05.2008
Beiträge: 3

BeitragVerfasst am: 06 Apr 2012 - 15:05:55    Titel: Taschenrechner mit Java

Ich brauche eure Hilfe.Habe irendwie eine Denkblockade.Nachfolgend fein Programm eines einfachen Taschenrechners,aber irgendwie klappt es nicht.
Das Fenster wird zwar angezeigt,Zahlen kann ich auch eingeben aber mehr nicht - irgendwie findet er die Klasse der Berechnung nicht.Was mache ich falsch?

import java.awt.*;
import java.awt.event.*;



public class Taschenrechner extends TR_Fenster{
public static void main( String [] args ){
TR_Fenster f = new TR_Fenster();

}// public static void main( String [] args )
}// class Taschenrechner {




class TR_Fenster extends WindowAdapter implements ActionListener{

static String display_str1 = ""; // nimmt den im Display anzuzeigenden Text auf
static String display_str2 = ""; // speichert den als erstes eingegebenen Parameter zwischen
static final int displaylaenge = 24; // ein Konstante, die an verschiedenen Stellen verwendet wird

boolean FunktionstasteGeradeGedrueckt = false; // die letzte gedrueckte Taste war eine Funktionstaste
boolean komma = false; // es ist EIN Komma eingegeben worden, das reicht, mehr gibts nicht
char Funktion = '_'; // steuert das Rechenwerk, Belegung siehe unten

Rechenwerk Berechnung = new Rechenwerk();
// Klassenname: Rechenwerk (bzw. Rechenwerk.java)
// Instanzenname: Berechnung


static Frame meinFenster ; // das Fenster vom Taschenrechner
static TextField Text ; // das Display vom Taschenrechner

// ------------------------------------------------------------
TR_Fenster(){ // fangen wir mal mit einem Standardkonstruktor an

this.meinFenster = new Frame("Taschenrechner"); // das Fenster vom Taschenrechner
this.meinFenster.setSize(220,210); // Fenstergroesse
this.meinFenster.setBackground(Color.lightGray);// Hintergrundfarbe des Fensters
this.meinFenster.setLayout(null); // Layoutmanager kommen naechstes Semester
this.meinFenster.addWindowListener(this); // Geheimnis, Aufloesung naechstes Semester

this.Text = new TextField("", displaylaenge); // das Display vom Taschenrechner
this.Text.setEditable( false ); // Bedienung nur durch die Buttons des Fensters
this.Text.setBounds(10,30,200,30); // Groesse und Position des Displays in Pixeln
this.Text.setBackground(Color.white); // Hintergrundfarbe des Displays
this.meinFenster.add(this.Text); // Damit das Display auch im Fenster erscheint

Button button7 = new Button("7"); // Ein Button mit der Beschriftung "7"
button7.setBounds(10,65,30,30); // Groesse und Position des Buttons
button7.addActionListener(this ); // Geheimnis, Aufloesung naechstes Semester
this.meinFenster.add(button7); // Damit der Button auch im Fenster erscheint

Button button8 = new Button("8"); // Die Reihenfolge der Buttons folgt der Darstellung
button8.setBounds(45,65,30,30); // im Fenster.
button8.addActionListener(this );
this.meinFenster.add(button8);

Button button9 = new Button("9");
button9.setBounds(80,65,30,30);
button9.addActionListener(this );
this.meinFenster.add(button9);

Button button_plus = new Button("+");
button_plus.setBounds(115,65,30,30);
button_plus.addActionListener(this );
this.meinFenster.add(button_plus);

Button button_log = new Button("Log");
button_log.setBounds(150,65,60,30);
button_log.addActionListener(this );
this.meinFenster.add(button_log);

Button button4 = new Button("4");
button4.setBounds(10,100,30,30);
button4.addActionListener(this );
this.meinFenster.add(button4);

Button button5 = new Button("5");
button5.setBounds(45,100,30,30);
button5.addActionListener(this );
this.meinFenster.add(button5);

Button button6 = new Button("6");
button6.setBounds(80,100,30,30);
button6.addActionListener(this );
this.meinFenster.add(button6);

Button button_minus = new Button("-");
button_minus.setBounds(115,100,30,30);
button_minus.addActionListener(this );
this.meinFenster.add(button_minus);

Button button_radix = new Button("Radix");
button_radix.setBounds(150,100,60,30);
button_radix.addActionListener(this );
this.meinFenster.add(button_radix);

Button button1 = new Button("1");
button1.setBounds(10,135,30,30);
button1.addActionListener(this );
this.meinFenster.add(button1);

Button button2 = new Button("2");
button2.setBounds(45,135,30,30);
button2.addActionListener(this );
this.meinFenster.add(button2);

Button button3 = new Button("3");
button3.setBounds(80,135,30,30);
button3.addActionListener(this );
this.meinFenster.add(button3);

Button button_mal = new Button("*");
button_mal.setBounds(115,135,30,30);
button_mal.addActionListener(this );
this.meinFenster.add(button_mal);

Button button_potenz = new Button("Potenz");
button_potenz.setBounds(150,135,60,30);
button_potenz.addActionListener(this );
this.meinFenster.add(button_potenz);

Button button0 = new Button("0");
button0.setBounds(10,170,30,30);
button0.addActionListener(this );
this.meinFenster.add(button0);

Button button_komma = new Button(",");
button_komma.setBounds(45,170,30,30);
button_komma.addActionListener(this );
this.meinFenster.add(button_komma);

Button button_istgleich = new Button("=");
button_istgleich.setBounds(80,170,30,30);
button_istgleich.addActionListener(this );
this.meinFenster.add(button_istgleich);

Button button_durch = new Button("/");
button_durch.setBounds(115,170,30,30);
button_durch.addActionListener(this );
this.meinFenster.add(button_durch);

Button button_c = new Button("C");
button_c.setBounds(150,170,60,30);
button_c.addActionListener(this );
this.meinFenster.add(button_c);

this.meinFenster.setVisible( true ); // muß an den Schluß, damit auch alles gleich sichtbar wird

}// TR_Fenster() ::: konstruktor :::


// ------------------------------------------------------------
public void windowClosing(WindowEvent event) // die Methode, die durch die Schaltflaeche zum
{ // schliessen eines Fensters angesprochen wird
meinFenster.setVisible(false);
meinFenster.dispose();
System.exit(0);
}// public void windowClosing(WindowEvent event)
// ------------------------------------------------------------
public void actionPerformed(ActionEvent e){ // in dieser Methode spielt sich die gesamte
Button tmp = (Button)e.getSource(); // Funktionalitaet des Fensters ab.
char verzweigung = tmp.getLabel().charAt(0); // Diese Methode wird jedesmal aktiv, wenn
// irgend ein Button gedrückt wird
switch ( verzweigung )
{
case '0': ; // Ziffern werden einfach nur ins Display übernommen, solange Platz ist
case '1': ;
case '2': ;
case '3': ;
case '4': ;
case '5': ;
case '6': ;
case '7': ;
case '8': ;
case '9': if ( FunktionstasteGeradeGedrueckt ){ // loescht das Display, falls nach einer Funktionstaste
FunktionstasteGeradeGedrueckt = false; // die naechste Ziffer eingegeben wird (muss ja nicht unbedingt
display_str1 = ""; // so sein, man kann ja auch gleich danach auf "=" druecken)
komma = false;
} //if ( FunktionstasteGeradeGedrueckt )

if (display_str1.length() < displaylaenge) { // fuegt die naechste eingegebene Ziffer im
display_str1 = display_str1.concat(tmp.getLabel() );// Display ein, stellt sicher, dass nicht
Text.setText(display_str1 ); // mehr Zeichen eingegeben werden koennen
} // if (display_str.length() < displaylaenge) // als Platz ist.
break;

case ',': if (komma) break; else komma=true; // nur ein Komma pro Zahl erlaubt
if (display_str1.length() < displaylaenge) {
display_str1 = display_str1.concat("."); // fügt einen Punkt statt des Kommas ein
Text.setText(display_str1 ); // findet die VM besser so
} // if (display_str.length() < displaylaenge)
break;

// Die als letztes gedrueckte Funktionstaste wird in der Variablen "Funktion" festgehalten.
// Mit dieser Variablen wird sie gegebenenfalls auch an das Rechenwerk uebergeben.
// Man beachte die Inhalte, die uebergeben werden koennen.
case '+': Funktion = '+'; display_str2 = display_str1; FunktionstasteGeradeGedrueckt = true; break;
case '-': Funktion = '-'; display_str2 = display_str1; FunktionstasteGeradeGedrueckt = true; break;
case '*': Funktion = '*'; display_str2 = display_str1; FunktionstasteGeradeGedrueckt = true; break;
case '/': Funktion = '/'; display_str2 = display_str1; FunktionstasteGeradeGedrueckt = true; break;
case 'R': Funktion = 'R'; display_str2 = display_str1; FunktionstasteGeradeGedrueckt = true; break; // Wurzel
case 'P': Funktion = 'P'; display_str2 = display_str1; FunktionstasteGeradeGedrueckt = true; break; // Potenz

// Aufruf des Rechenwerkes im Normalfall:
// Parametrisierung beachten, aufgerufene Methode beachten.
case '=': display_str1 = Berechnung.ausrechnen( display_str2, display_str1, Funktion);
FunktionstasteGeradeGedrueckt = true;
Text.setText(display_str1 );
break;

// Sonderfall: Aufruf des Rechenwerkes mit Einzelparameter für Logarithmus
// Uebergebene Parameter beachten, aufgerufene Methode beachten.
case 'L': display_str1 = Berechnung.ausrechnen( "0", display_str1, 'L');
FunktionstasteGeradeGedrueckt = true; //
Text.setText(display_str1 );
break;

//Taschenrechner zurücksetzen, alles löschen
case 'C': display_str2 = ""; display_str1 = "";
FunktionstasteGeradeGedrueckt = false; komma=false;
Text.setText(display_str1 );
break;

default: ;
}// switch ( verzweigung )

}// public void actionPerformed(ActionEvent e)

}// class TR_Fenster extends WindowAdapter implements ActionListener{

public class Rechenwerk
{

// Methode: ausrechnen

public String ausrechnen(String str2, String str1, char fkt)
{

//String als Double verwenden

double a = Double.valueOf(str2).doubleValue();
double b = Double.valueOf(str1).doubleValue();
double ergebnis = 0;
String ergebnisStr = "";

//Überprüfen ob durch 0 geteilt werden soll

if (fkt == '/' && b == 0)
{
ergebnisStr = "Durch 0 darf nicht dividiert werden";

}//ende if (fkt == '/' && b == 0)
else
{
//welche Rechenoperation soll benutzt weden? Auswahl über switch Funktion
switch (fkt)
{
case '+': ergebnis = addieren(a,b); break;
case '-': ergebnis = subtrahieren(a,b); break;
case '*': ergebnis = multiplizieren(a,b); break;
case '/': ergebnis = dividieren(a,b); break;
case 'P': ergebnis = potenzieren(a,b); break;
case 'R': ergebnisStr = "Wurzel ziehen, nicht möglich mit diesem Rechner"; break;
case 'L': ergebnisStr = "Logarithmus nicht möglich mit diesem Rechner"; break;

default : ;

}//ende switch (fkt)



}// ende else

//Rückgabe das Ergebnis an ergebnisStr

return ergebnisStr;

}// ende public ausrechnen(String str2, String str1, char fkt)



//Methode: addieren
public double addieren(double a, double b)
{
a+=b;
return a;
}//ende public double addieren(double a, double b)


//Methode: subtrahieren
public double subtrahieren(double a, double b)
{
a-=b;
return a;
}//ende public double subtrahieren(double a, double b)


//Methode: muliplizieren
public double multiplizieren(double a, double b)
{
a+=b;
return a;
}//ende public double multiplizieren(double a, double b)



//Methode: dividieren
public double dividieren(double a, double b)
{
a/=b;
return a;
}//ende public double dividieren(double a, double b)


//Methode: potenzieren
public double potenzieren (double a, double b)
{
double result = 1;

for (int i = (int)b; i > 0; --i)
{
result *= a;
}
return result;

}//public double potenz (double a, double b)


}// ende class Rechenwerk


Wer kann mir helfen?
Manicopus
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 09.09.2019
Beiträge: 64

BeitragVerfasst am: 15 Sep 2019 - 20:23:55    Titel:

Sie können Ihren eigenen Online-Shop erstellen. Hier nutzen Sie diese Plattform - https://de.supr.com/start/
Milka_roys
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 18.07.2019
Beiträge: 4

BeitragVerfasst am: 23 Sep 2019 - 10:11:25    Titel: look

Hi, I think you have written a lot of extra information. I can advise you to read Gambling-Lab when it opens. Just if you are interested in such earnings, then you will be interested in the presence of various bonuses that will be there. Wait.
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Taschenrechner mit Java
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum