I
issel
Gast
Ich schreibe derzeit ein Programm, was verschiedene Vektorrechnungen machen soll, hierzu der Quelltext
Dazu kommt noch folgender Code
Beide Quelltexte befinden sich im gleichen Verzeichnis, doch leider erkennt der von mir gepostete erste Quelltext nicht den betrag[\b] aus dem zweite teil.
Weiß jemand um abhilfe ?
Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import javax.swing.*;
public class VektorLayout extends JApplet implements ActionListener
{
Button btn_erg;
ButtonGroup cbg;
JCheckBox cb1,cb2,cb3,cb4,cb5;
Panel grid1,flow1,flow2,flow3,border;
Label operator;
Vektorpanel v1,v2,v3;
TextField sp,r;
double R,x;
double betrag;
vektor A,B,C;
public VektorLayout()
{
setSize(400,400);
border=new Panel();
border.setLayout(new BorderLayout());
sp=new TextField(3);
r=new TextField(3);
grid1=new Panel();
grid1.setLayout(new GridLayout(2,1));
flow1=new Panel();
flow1.setLayout(new FlowLayout());
flow2=new Panel();
flow2.setLayout(new FlowLayout());
cbg=new ButtonGroup();
v1=new Vektorpanel();
v2=new Vektorpanel();
v3=new Vektorpanel();
operator=new Label(" ----");
cb1 = new JCheckBox("Summe",false);
cb1.addActionListener(this);
cb2 = new JCheckBox("Skalarmult",false);
cb2.addActionListener(this);
cb3 = new JCheckBox("Betrag",false);
cb3.addActionListener(this);
cb4 = new JCheckBox("Skalarprod",false);
cb4.addActionListener(this);
cb5 = new JCheckBox("KreuzProd",false);
cb5.addActionListener(this);
btn_erg = new Button("=");
btn_erg.addActionListener(this);
cbg.add(cb1);
cbg.add(cb2);
cbg.add(cb3);
cbg.add(cb4);
cbg.add(cb5);
addall();
}
public void addall()
{
flow1.add(v1);
flow1.add(operator);
flow1.add(v2);
flow1.add(btn_erg);
flow1.add(v3);
flow2.add(cb1);
flow2.add(cb2);
flow2.add(cb3);
flow2.add(cb4);
flow2.add(cb5);
add(flow1,BorderLayout.NORTH);
add(flow2,BorderLayout.CENTER);
}
public void removeall()
{
flow1.remove(v1);
flow1.remove(operator);
flow1.remove(v2);
flow1.remove(btn_erg);
flow1.remove(v3);
flow1.remove(sp);
flow1.remove(r);
flow2.remove(cb1);
flow2.remove(cb2);
flow2.remove(cb3);
flow2.remove(cb4);
flow2.remove(cb5);
add(flow1,BorderLayout.NORTH);
add(flow2,BorderLayout.CENTER);
}
//Radius auslesen
public double rlesen()
{
R=Double.parseDouble(r.getText());
return R;
}
class Vektorpanel extends JPanel
{
JTextField oben,unten,mitte,r;
public Vektorpanel()
{
setLayout(new BorderLayout());
Panel grid;
KlammerPanel klammerlinks=new KlammerPanel(0);
KlammerPanel klammerrechts=new KlammerPanel(1);
grid= new Panel();
grid.setLayout(new GridLayout(3,3));
oben= new JTextField(3);
mitte= new JTextField(3);
unten= new JTextField(3);
add(klammerlinks,BorderLayout.WEST);
add(klammerrechts,BorderLayout.EAST);
grid.add(oben,BorderLayout.CENTER);
grid.add(mitte,BorderLayout.CENTER);
grid.add(unten,BorderLayout.CENTER);
add(grid);
}
//Einlesen von Textfeldern und zurück geben
public double[]lesen()
{
double[]eingaben=new double[4];
eingaben[1] = Double.parseDouble(oben.getText());
eingaben[2] = Double.parseDouble(mitte.getText());
eingaben[3] = Double.parseDouble(unten.getText());
return eingaben;
}
//schreiben in die Textfelder
public void schreiben(double[]eingeben)
{
oben.setText(""+eingeben[1]);
mitte.setText(""+eingeben[2]);
unten.setText(""+eingeben[3]);
}
//spschreiben
public void spschreib(double betrag)
{
sp.setText(""+betrag);
}
}
public class KlammerPanel extends Panel
{
int orientierung;
public KlammerPanel(int art)
{
orientierung = art;
setBackground(Color.WHITE);
}
public void paint(Graphics g)
{
if(orientierung==0)
{
g.drawArc(0,0,getWidth(),getHeight(),90,180); // Zeichne Umrandung
}
else
{
g.drawArc(0,0,getWidth()-1,getHeight()-1,90,-180); // Zeichne Umrandung
}
}
}
public void actionPerformed(ActionEvent event)
{
double[]IO = new double[4];
C= new vektor();
if(event.getSource()==cb1)
{
removeall();
addall();
operator.setText("Summe");
System.out.println("*");
validate();
}
if(event.getSource()==cb2)
{
removeall();
addall();
operator.setText("Skalarmult");
flow1.remove(v2);
flow1.remove(v3);
flow1.remove(btn_erg);
flow1.add(r);
flow1.add(btn_erg);
btn_erg.addActionListener(this);
flow1.add(v3);
validate();
}
if(event.getSource()==cb3)
{
removeall();
addall();
operator.setText("Betrag");
flow1.remove(v3);
flow1.remove(v2);
flow1.add(sp);
validate();
}
if(event.getSource()==cb4)
{
removeall();
addall();
operator.setText("Skalarprod");
validate();
}
if(event.getSource()==cb5)
{
removeall();
addall();
operator.setText("Kreuzprod");
validate();
}
//Rechnung und Ausgabe
if(event.getSource()==btn_erg)
{
if(cb1.isSelected())
{
IO = v1.lesen();
A = new vektor(IO[1],IO[2],IO[3]);
System.out.println(""+IO[1]+", "+IO[2]+", "+IO[3]);
IO = v2.lesen();
B = new vektor(IO[1],IO[2],IO[3]);
System.out.println(""+IO[1]+", "+IO[2]+", "+IO[3]);
C.summe(A,B);
v3.schreiben(C.gibKoord());
}
if(cb2.isSelected())
{
IO = v1.lesen();
A = new vektor(IO[1],IO[2],IO[3]);
System.out.println(""+IO[1]+", "+IO[2]+", "+IO[3]);
rlesen();
C.skalmult(A,R);
v3.schreiben(C.gibKoord());
}
if(cb3.isSelected())
{
IO = v1.lesen();
A = new vektor(IO[1],IO[2],IO[3]);
System.out.println(""+IO[1]+", "+IO[2]+", "+IO[3]);
C.betrag(A);
C.spschreiben(betrag);
}
if(cb4.isSelected())
{
C.skalprod(A,B);
v3.schreiben(C.gibKoord());
}
if(cb5.isSelected())
{
C.kreuzprod(A,B);
v3.schreiben(C.gibKoord());
}
}
}
/* public static void main(String args[]);
{
new VektorLayout();
}
*/
}
Dazu kommt noch folgender Code
Code:
public class vektor
{
// Eigenschaften
double Vektorarray[]=new double[4];
//Konstruktoren
public vektor(double x1,double x2,double x3)
{
Vektorarray[1]=x1;
Vektorarray[2]=x2;
Vektorarray[3]=x3;
}
//Vektor erstellen
public vektor()
{
for(int i=0;i<=3;i++)
Vektorarray[i]=0.0;
}
//Summe vom Vektor erstellen
public void summe(vektor v1, vektor v2)
{
for(int i=0;i<=3;i++)
Vektorarray[i]=v1.Vektorarray[i]+v2.Vektorarray[i];
}
//skalarmultiplikation
public void skalmult(vektor v1,double r)
{
for(int i=0;i<=3;i++)
Vektorarray[i]=v1.Vektorarray[i]*r;
}
//vektorbetrag
public double betrag(vektor v1)
{
double betrag=0;
for(int i=0;i<=3;i++)
{
betrag=betrag+Vektorarray[i]*Vektorarray[i];
}
return betrag= Math.sqrt(betrag);
}
//Skalarprodukt
public double skalprod(vektor v1, vektor v2)
{
double skalprod=0;
for(int i=0;i<=3;i++)
{
skalprod=skalprod+v1.Vektorarray[i]*v2.Vektorarray[i];
}
return skalprod;
}
//Kreuzprodukt
public void kreuzprod(vektor v1, vektor v2)
{
Vektorarray[1]=v1.Vektorarray[2]*v2.Vektorarray[3]-v1.Vektorarray[3]*v2.Vektorarray[2];
Vektorarray[2]=v1.Vektorarray[3]*v2.Vektorarray[1]-v1.Vektorarray[1]*v2.Vektorarray[3];
Vektorarray[3]=v1.Vektorarray[1]*v2.Vektorarray[2]-v1.Vektorarray[2]*v2.Vektorarray[1];
}
public void setKoord(double[] eingaben)
{
Vektorarray[1]=eingaben[1];
Vektorarray[2]=eingaben[2];
Vektorarray[3]=eingaben[3];
}
//Ausgabe array
public double[] gibKoord()
{
return Vektorarray;
}
}
Beide Quelltexte befinden sich im gleichen Verzeichnis, doch leider erkennt der von mir gepostete erste Quelltext nicht den betrag[\b] aus dem zweite teil.
Weiß jemand um abhilfe ?