Hey Leute
Ich bin grade dabei mir selbst Java beizubringen und habe mir jetzt einen Taschenrechner geschrieben. Allerdings klappt die Sinus, Cosinus, Tangens und Logarithmus Funktion noch nicht ganz. Vielleicht kann mir jemand helfen und gegebenfalls Tipps zur Perfektionierung geben. Hier der Quelltext:
Ich bin grade dabei mir selbst Java beizubringen und habe mir jetzt einen Taschenrechner geschrieben. Allerdings klappt die Sinus, Cosinus, Tangens und Logarithmus Funktion noch nicht ganz. Vielleicht kann mir jemand helfen und gegebenfalls Tipps zur Perfektionierung geben. Hier der Quelltext:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Taschenrechner extends JFrame implements ActionListener{
private double eingabe,eingabe2,ergebnis,x;
private String[] jbName = {"+","-","*","/","" + (char)8730,"n-te" + (char)8730,"sin","cos","tan","asin","acos","atan","x²","x^n","log","log10","%","FAK","QS","KGV","GGT","AC","Ans"},jlName = {"="};
private JButton[] jb;
private JTextField[] jt;
private JTextField jt2;
private Font r,s;
private JLabel[] jl;
private Color cfg,black,gruen,bg,rot;
public Taschenrechner(){
super("Machine");
setBounds(300,100,680,320);
setResizable(false);
setDefaultCloseOperation(3);
setLayout(null);
setVisible(true);
setBackground (bg);
jl = new JLabel[jlName.length];
cfg = new Color(255,255,255);
black = new Color(100,100,100);
gruen = new Color(0,255,0);
rot = new Color(255,0,0);
r = new Font("Arial",1,15);
s = new Font("New Times Roman",1,20);
for(int k=0;k<jl.length;k++){
jl[k] = new JLabel(jlName[k]);
jl[k] .setFont(s);
jl[k] .setForeground(black);
add(jl[k]);
}
jl[0].setBounds(103,180,900,30);
jb = new JButton [jbName.length];
for(int i=0;i<jb.length;i++) {
jb[i] = new JButton(jbName[i]);
jb[i] .setBounds(220+105*(i%4),25+(i/4)*41,100,37);
jb[i] .setFont(r);
jb[i] .addActionListener(this);
add(jb[i]);
}
jb[21].setBackground(rot);
jb[22].setBackground(gruen);
jt = new JTextField[3];
jt2 = new JTextField("");
for(int j=0;j<jt.length;j++){
jt[j] = new JTextField("");
jt[j] .setForeground(cfg);
jt[j] .setBackground(black);
jt[j] .setFont(r);
add(jt[j]);
}
jt[0].setEditable(true);
jt[1].setEditable(true);
jt[2].setEditable(false);
jt2.setEditable(false);
jt2.setBounds(60,90,100,30);
jt[0].setBounds(25,35,170,30);
jt[1].setBounds(25,145,170,30);
jt[2].setBounds(25,220,170,30);
jt2.setFont(r);
jt2.setForeground(cfg);
jt2.setBackground(black);
add(jt2);
jt[1].setText(""+0);
}
public void actionPerformed(ActionEvent e){
eingabe = new Double(jt[0].getText()).doubleValue();
eingabe2 = new Double(jt[1].getText()).doubleValue();
if(e.getSource()==jb[0] ){
x=eingabe+eingabe2;
jt[2] .setText(""+x);
jt2 .setText("+");
}
if(e.getSource()==jb[1]){
x=eingabe-eingabe2;
jt[2] .setText(""+x);
jt2 .setText("-");
}
if(e.getSource()==jb[2]){
jt[2] .setText(""+eingabe*eingabe2);
jt2 .setText("*");
}
if(e.getSource()==jb[3]){
jt[2] .setText(""+eingabe/eingabe2);
jt2 .setText("/");
}
if(e.getSource()==jb[4]){
jt[2] .setText(""+Math.sqrt(eingabe));
jt2 .setText("" + (char)8730);
}
if(e.getSource()==jb[5]){
jt[2] .setText(""+Math.pow(eingabe,1/eingabe2));
jt2 .setText( "n-te" + (char)8730);
}
if(e.getSource()==jb[6]){
Math.toRadians(eingabe);
jt[2] .setText(""+Math.sin(eingabe));
jt2 .setText("sin(x)");
}
if(e.getSource()==jb[7]){
Math.toRadians(eingabe);
jt[2] .setText(""+Math.cos(eingabe));
jt2 .setText("cos(x)");
}
if(e.getSource()==jb[8]){
Math.toRadians(eingabe);
jt[2] .setText(""+Math.tan(eingabe));
jt2 .setText("tan(x)");
}
if(e.getSource()==jb[9]){
x = Math.asin(eingabe);
jt[2] .setText(""+Math.toDegrees(x));
jt2 .setText("asin(x)");
}
if(e.getSource()==jb[10]){
x = Math.acos(eingabe);
jt[2] .setText(""+Math.toDegrees(x));
jt2 .setText("acos(x)");
}
if(e.getSource()==jb[11]){
x = Math.atan(eingabe);
jt[2] .setText(""+Math.toDegrees(x));
jt2 .setText("atan(x)");
}
if(e.getSource()==jb[12]){
jt[2] .setText(""+Math.pow(eingabe,2));
jt2 .setText("x²");
}
if(e.getSource()==jb[13]){
jt[2] .setText(""+Math.pow(eingabe,eingabe2));
jt2 .setText("x^n");
}if(e.getSource()==jb[14]){
jt[2] .setText(""+Math.log(eingabe));
jt2 .setText("log(x)");
}
if(e.getSource()==jb[15]){
jt[2] .setText(""+Math.log10(eingabe));
jt2 .setText("log10(x)");
}
if(e.getSource()==jb[16]){
jt[2] .setText(""+eingabe%eingabe2);
jt2 .setText("%");
}if(e.getSource()==jb[17]){
jt[2] .setText("" + fakultaet((long)eingabe));
jt2 .setText("!");
}if(e.getSource()==jb[18]){
jt[2] .setText("" + qs ((int)eingabe));
jt2 .setText("QS");
}if(e.getSource()==jb[19]){
jt[2] .setText("" + kgV ((int)eingabe,(int)eingabe2));
jt2 .setText("KGV");
}if(e.getSource()==jb[20]){
jt[2] .setText(""+ ggT((int)eingabe,(int)eingabe2));
jt2 .setText("GGT");
}if(e.getSource()==jb[21]){
jt[0] .setText("");
jt[1] .setText("");
jt[2] .setText("");
jt2 .setText("");
}if(e.getSource()==jb[22]){
ergebnis = new Double(jt[2].getText()).doubleValue();
jt[0] .setText(""+ergebnis);
jt[1] .setText("0");
jt[2] .setText("");
jt2 .setText("Ans");
}
}
public static void main(String[] args){
new Taschenrechner();
}
public long fakultaet(long n){
if (n>0){
return n*fakultaet(n-1);}
else {
return 1;
}
}
public int ggT(int eingabe, int eingabe2){
if(eingabe == 0 || eingabe2==0){
return Math.max(eingabe,eingabe2);
}else{
return ggT(Math.min(eingabe,eingabe2),Math.max(eingabe,eingabe2)%Math.min(eingabe,eingabe2));
}
}
public int qs(int n){
if(n==0){
return 0;
}else{
return n%10+qs(n/10);
}
}
public int kgV(int a,int b){
return a*b/ggT(a,b);
}
}