Nachdem Ich in Bluej einen "Non static Method cannot be referenced from a static context" Fehler beim Methoden aufrufen hatte, habe ich alles in ein Programm vereint. Ein funktionierender Konsolen (interaktiv) Teil und einen neu aus Java Editor kopierten Frame Teil, der dort funktioniert hat. Wenn ich das Object erzeuge, muss ich einen String eingeben. Welchen? :bahnhof: Ich will das Programm bei bluej laufen lassen, da es teilweise beim Java Editor, häufig nicht auf Eingaben hört. ;(
Meldung:
Taschenrechner(string Title)
Instanzname: taschenr1
new Taschenrechner ("Was muss hier rein?")
Ohne Frame(funktioniert):
Mit Frame:
Meldung:
Taschenrechner(string Title)
Instanzname: taschenr1
new Taschenrechner ("Was muss hier rein?")
Ohne Frame(funktioniert):
Java:
import java.util.Scanner;
public class Konsole
{
public void EinfachRechnen()
{
Scanner sc = new Scanner (System.in);
System.out.println("Dieses Programm rechnet +|-|*|/.");
System.out.println("Geben sie 1 für +, 2 für -, 3 für * und 4 für / Rechnung ein:");
int Rechnung = sc.nextInt();
if(Rechnung ==1)
{System.out.println("Hier wird Zahl 1 + Zahl 2 gerechnet.");
System.out.print("Zahl 1 eingeben: ");
double addZ1=sc.nextDouble();
System.out.print("Zahl 2 eingeben: ");
double addZ2=sc.nextDouble();
double adderg=addZ1+addZ2;
System.out.print("Ihr Ergebnis beträgt ca.: "+adderg);}
else if (Rechnung ==2)
{System.out.println("Hier wird Zahl 1 - Zahl 2 gerechnet.");
System.out.print("Zahl 1 eingeben: ");
double subZ1=sc.nextDouble();
System.out.print("Zahl 2 eingeben: ");
double subZ2=sc.nextDouble();
double suberg=subZ1+subZ2;
System.out.print("Ihr Ergebnis beträgt ca.: "+suberg);}
else if (Rechnung ==3)
{System.out.println("Hier wird Zahl 1 * Zahl 2 gerechnet.");
System.out.print("Zahl 1 eingeben: ");
double multZ1=sc.nextDouble();
System.out.print("Zahl 2 eingeben: ");
double multZ2=sc.nextDouble();
double multerg=multZ1+multZ2;
System.out.print("Ihr Ergebnis beträgt ca.: "+multerg);}
else if (Rechnung ==4)
{System.out.println("Hier wird Zahl 1 / Zahl 2 gerechnet.");
System.out.print("Zahl 1 eingeben: ");
double divZ1=sc.nextDouble();
System.out.print("Zahl 2 eingeben: ");
double divZ2=sc.nextDouble();
double diverg=divZ1+divZ2;
System.out.print("Ihr Ergebnis beträgt ca.: "+diverg);}
else
{System.out.print("Die eingegebene Zahl ist nich im Programm entalten");}
}
public void WurzelZiehen()
{
Scanner sc = new Scanner (System.in );
System.out.println("Dieses Programm berechnet Wurzeln");
System.out.print("Die wievielte Wurzel soll berechnet werden: ");
int g = sc.nextInt();
System.out.print("Die Wurzel welcher Zahl soll gezogen werden: ");
double y = sc.nextDouble();
double [] koef = new double [g+1];
for(int i=1;i<g;i++)
{
koef [i] = 0;
}
koef [0] = 1;
koef [g] = -y;
double x = 1;
double v = 0.00001;
double Ergebnis = Nsb(g,x,v,koef);
System.out.print("Die gewünschte Wurzel beträgt ca. "+Ergebnis+".");
}
public double Nsb (int g, double x, double v, double [] koef)
{
double m = x+v+1;
double s = v+1;
while(s>v)
{
m = x;
double u = Abl(g, x, 0, koef)/Abl(g, x, 1, koef);
x = x-u;
s = konj(m-x);
}
return x;
}
public void Nullstellenberechnung ()
{
Scanner sc = new Scanner (System.in);
System.out.println("Dieses Programm ist dazu da die nächste an ihrer Schätzung liegende Nullstelle zu berechnen.");
System.out.print("Geben sie den Grad der Funktion ein: ");
int g = sc.nextInt();
System.out.print("Geben sie die geschätzte Nullstelle ein: ");
double x = sc.nextDouble();
double [] koef = new double [g+1];
for(int i = 0;i<g+1;i++)
{
int a = g-i;
System.out.print("Geben sie den Koefizienten bei x hoch "+a+" ein: ");
koef [i] = sc.nextDouble();
}
System.out.print("Wie genau soll die Nullstelle berechnet werden? Umso kleiner, umso genauer (Empfehlung: 0,0001) : ");
double v = sc.nextDouble();
double m = x+v+1;
double s = v+1;
while(s>v)
{
m = x;
double u = Abl(g, x, 0, koef)/Abl(g, x, 1, koef);
x = x-u;
s = konj(m-x);
}
System.out.print("Ihre gewünschte Nullstelle beträgt ca.: "+x);
}
public double konj(double b)
{
if(b<0)
{return -b;}
else
{return b;}
}
public double Abl (int g, double x, int z, double [] koef )
{
double [][] Ergebnis = new double [g+2][g+1];
for(int i = 0;i<g+1;i++)
{
Ergebnis [0][i] = koef [i];
}
for(int j=1;j<g+2;j++)
{
Ergebnis [j][0] = Ergebnis [j-1][0];
for(int k=1;k<g+2-j;k++)
{
Ergebnis [j][k] = Ergebnis [j][k-1] * x + Ergebnis [j-1][k];
}
}
for(int j=1;j<g+2;j++)
{
int n=j-1;
Ergebnis [j][g+1-j] = Ergebnis [j][g+1-j]*fakultaet(n);
}
if(z>g)
{
return 0;
}
else
{
return Ergebnis [z+1][g-z];
}
}
public void AnEinemPunktAbleiten ()
{
Scanner sc = new Scanner (System.in);
System.out.println("Dieses Programm ist dazu da die Funktions- und Ableitungswerte für einen x-Wert zu berechnen.");
System.out.print("Geben sie dazu bitte den Grad der Funktion ein: ");
int g = sc.nextInt();
System.out.print("Geben sie den gewünschten X-Wert ein: ");
double x = sc.nextDouble();
System.out.print("Geben sie die gewünschte Zahl der Ableiung an, die 0 für die normale Funktion: ");
int z = sc.nextInt();
double [][] Ergebnis = new double [g+2][g+1];
for(int i=0;i<g+1;i++)
{
int a = g-i;
System.out.print("Geben sie den Koefizienten bei x hoch "+a+" der normalen Funktion an: ");
Ergebnis [0][i] = sc.nextDouble();
}
for(int j=1;j<g+2;j++)
{
Ergebnis [j][0] = Ergebnis [j-1][0];
for(int k=1;k<g+2-j;k++)
{
Ergebnis [j][k] = Ergebnis [j][k-1] * x + Ergebnis [j-1][k];
}
}
for(int j=1;j<g+2;j++)
{
int n=j-1;
Ergebnis [j][g+1-j] = Ergebnis [j][g+1-j]*fakultaet(n);
}
if(z>g)
{
System.out.println("Der gewünschte Y-Wert beträgt: 0");
}
else
{
System.out.println("Der gewünschte Y-Wert beträgt: "+Ergebnis [z+1][g-z]);
}
}
public static int fakultaet(int n) {
if (n == 1||n == 0)
{
return 1;
}
else
{
return fakultaet(n - 1) * n;
}
}
}
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.Scanner;
/**
*
* Beschreibung
*
* @version 1.0 vom 22.05.2014
* @author
*/
public class Taschenrechner extends Frame {
// Anfang Attribute
private JPanel jPanel1 = new JPanel(null, true);
private JButton jButton1 = new JButton();
private JButton jButton2 = new JButton();
private JButton jButton3 = new JButton();
private JButton jButton4 = new JButton();
// Ende Attribute
public Taschenrechner(String title) {
// Frame-Initialisierung
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { dispose(); }
});
int frameWidth = 1349;
int frameHeight = 602;
setSize(frameWidth, frameHeight);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
int x = (d.width - getSize().width) / 2;
int y = (d.height - getSize().height) / 2;
setLocation(x, y);
setResizable(false);
Panel cp = new Panel(null);
add(cp);
// Anfang Komponenten
jPanel1.setBounds(0, 0, 1329, 561);
jPanel1.setOpaque(false);
cp.add(jPanel1);
jButton1.setBounds(72, 56, 545, 201);
jButton1.setText("Einfaches Rechnen");
jButton1.setMargin(new Insets(2, 2, 2, 2));
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton1_ActionPerformed(evt);
}
});
jPanel1.add(jButton1);
jButton2.setBounds(720, 56, 545, 201);
jButton2.setText("Nullstellen Berechnen");
jButton2.setMargin(new Insets(2, 2, 2, 2));
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton2_ActionPerformed(evt);
}
});
jPanel1.add(jButton2);
jButton3.setBounds(72, 328, 545, 201);
jButton3.setText("Funktions und Ableitungswerte errechnen");
jButton3.setMargin(new Insets(2, 2, 2, 2));
jButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton3_ActionPerformed(evt);
}
});
jPanel1.add(jButton3);
jButton4.setBounds(720, 328, 545, 201);
jButton4.setText("Wurzeln ziehen");
jButton4.setMargin(new Insets(2, 2, 2, 2));
jButton4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton4_ActionPerformed(evt);
}
});
jPanel1.add(jButton4);
// Ende Komponenten
setVisible(true);
} // end of public Taschenrechner
// Anfang Methoden
public void jButton1_ActionPerformed(ActionEvent evt) {
Scanner sc = new Scanner (System.in);
System.out.println("Dieses Programm rechnet +|-|*|/.");
System.out.println("Geben sie 1 für +, 2 für -, 3 für * und 4 für / Rechnung ein:");
int Rechnung = sc.nextInt();
if(Rechnung ==1)
{System.out.println("Hier wird Zahl 1 + Zahl 2 gerechnet.");
System.out.print("Zahl 1 eingeben: ");
double addZ1=sc.nextDouble();
System.out.print("Zahl 2 eingeben: ");
double addZ2=sc.nextDouble();
double adderg=addZ1+addZ2;
System.out.print("Ihr Ergebnis beträgt ca.: "+adderg);}
else if (Rechnung ==2)
{System.out.println("Hier wird Zahl 1 - Zahl 2 gerechnet.");
System.out.print("Zahl 1 eingeben: ");
double subZ1=sc.nextDouble();
System.out.print("Zahl 2 eingeben: ");
double subZ2=sc.nextDouble();
double suberg=subZ1-subZ2;
System.out.print("Ihr Ergebnis beträgt ca.: "+suberg);}
else if (Rechnung ==3)
{System.out.println("Hier wird Zahl 1 * Zahl 2 gerechnet.");
System.out.print("Zahl 1 eingeben: ");
double multZ1=sc.nextDouble();
System.out.print("Zahl 2 eingeben: ");
double multZ2=sc.nextDouble();
double multerg=multZ1*multZ2;
System.out.print("Ihr Ergebnis beträgt ca.: "+multerg);}
else if (Rechnung ==4)
{System.out.println("Hier wird Zahl 1 / Zahl 2 gerechnet.");
System.out.print("Zahl 1 eingeben: ");
double divZ1=sc.nextDouble();
System.out.print("Zahl 2 eingeben: ");
double divZ2=sc.nextDouble();
double diverg=divZ1/divZ2;
System.out.print("Ihr Ergebnis beträgt ca.: "+diverg);}
else
{System.out.print("Die eingegebene Zahl ist nich im Programm entalten");}}
// TODO hier Quelltext einfügen
// end of jButton1_ActionPerformed
public void jButton2_ActionPerformed(ActionEvent evt) {
Scanner sc = new Scanner (System.in);
System.out.println("Dieses Programm ist dazu da die nächste an ihrer Schätzung liegende Nullstelle zu berechnen.");
System.out.print("Geben sie den Grad der Funktion ein: ");
int g = sc.nextInt();
System.out.print("Geben sie die geschätzte Nullstelle ein: ");
double x = sc.nextDouble();
double [] koef = new double [g+1];
for(int i = 0;i<g+1;i++)
{
int a = g-i;
System.out.print("Geben sie den Koefizienten bei x hoch "+a+" ein: ");
koef [i] = sc.nextDouble();
}
System.out.print("Wie genau soll die Nullstelle berechnet werden? Umso kleiner, umso genauer (Empfehlung: 0,0001) : ");
double v = sc.nextDouble();
double m = x+v+1;
double s = v+1;
while(s>v)
{
m = x;
double u = Abl(g, x, 0, koef)/Abl(g, x, 1, koef);
x = x-u;
s = konj(m-x);
}
System.out.print("Ihre gewünschte Nullstelle beträgt ca.: "+x);// TODO hier Quelltext einfügen
} // end of jButton2_ActionPerformed
public void jButton3_ActionPerformed(ActionEvent evt) {
Scanner sc = new Scanner (System.in);
System.out.println("Dieses Programm ist dazu da die Funktions- und Ableitungswerte für einen x-Wert zu berechnen.");
System.out.print("Geben sie dazu bitte den Grad der Funktion ein: ");
int g = sc.nextInt();
System.out.print("Geben sie den gewünschten X-Wert ein: ");
double x = sc.nextDouble();
System.out.print("Geben sie die gewünschte Zahl der Ableiung an, die 0 für die normale Funktion: ");
int z = sc.nextInt();
double [][] Ergebnis = new double [g+2][g+1];
for(int i=0;i<g+1;i++)
{
int a = g-i;
System.out.print("Geben sie den Koefizienten bei x hoch "+a+" der normalen Funktion an: ");
Ergebnis [0][i] = sc.nextDouble();
}
for(int j=1;j<g+2;j++)
{
Ergebnis [j][0] = Ergebnis [j-1][0];
for(int k=1;k<g+2-j;k++)
{
Ergebnis [j][k] = Ergebnis [j][k-1] * x + Ergebnis [j-1][k];
}
}
for(int j=1;j<g+2;j++)
{
int n=j-1;
Ergebnis [j][g+1-j] = Ergebnis [j][g+1-j]*fakultaet(n);
}
if(z>g)
{
System.out.println("Der gewünschte Y-Wert beträgt: 0");
}
else
{
System.out.println("Der gewünschte Y-Wert beträgt: "+Ergebnis [z+1][g-z]);
}
// TODO hier Quelltext einfügen
} // end of jButton3_ActionPerformed
public void jButton4_ActionPerformed(ActionEvent evt) {
Scanner sc = new Scanner (System.in );
System.out.println("Dieses Programm berechnet Wurzeln");
System.out.print("Die wievielte Wurzel soll berechnet werden: ");
int g = sc.nextInt();
System.out.print("Die Wurzel welcher Zahl soll gezogen werden: ");
double y = sc.nextDouble();
double [] koef = new double [g+1];
for(int i=1;i<g;i++)
{
koef [i] = 0;
}
koef [0] = 1;
koef [g] = -y;
double x = 1;
double v = 0.00001;
double Ergebnis = Nsb(g,x,v,koef);
System.out.print("Die gewünschte Wurzel beträgt ca. "+Ergebnis+".");// TODO hier Quelltext einfügen
} // end of jButton4_ActionPerformed
public double Nsb (int g, double x, double v, double [] koef)
{
double m = x+v+1;
double s = v+1;
while(s>v)
{
m = x;
double u = Abl(g, x, 0, koef)/Abl(g, x, 1, koef);
x = x-u;
s = konj(m-x);
}
return x;
}
public double konj(double b)
{
if(b<0)
{return -b;}
else
{return b;}
}// Ende Methoden
public double Abl (int g, double x, int z, double [] koef )
{
double [][] Ergebnis = new double [g+2][g+1];
for(int i = 0;i<g+1;i++)
{
Ergebnis [0][i] = koef [i];
}
for(int j=1;j<g+2;j++)
{
Ergebnis [j][0] = Ergebnis [j-1][0];
for(int k=1;k<g+2-j;k++)
{
Ergebnis [j][k] = Ergebnis [j][k-1] * x + Ergebnis [j-1][k];
}
}
for(int j=1;j<g+2;j++)
{
int n=j-1;
Ergebnis [j][g+1-j] = Ergebnis [j][g+1-j]*fakultaet(n);
}
if(z>g)
{
return 0;
}
else
{
return Ergebnis [z+1][g-z];
}
}
public static int fakultaet(int n) {
if (n == 1||n == 0)
{
return 1;
}
else
{
return fakultaet(n - 1) * n;
}
}
public static void main(String[] args) {
new Taschenrechner("Taschenrechner");
} // end of main
} // end of class Taschenrechner