Hallo liebe Java Gemeinde.
Ich hoffe ihr könnt mir kurzfristig helfen.
Ich soll für den Lehrstuhl eine Regressionsanalyse mit Java programmieren. Ich poste einfach mal den Code den ich schon habe.
Zu meinem (jetzigen Problem):
1) Ich habe durch den Startbutton eine Reihe von Messwerten möglich gemacht, Problem ist aber das bei einer Regressionsanalyse ) zwei oder mehrere MESSREIHEN verglichen werden sollen, die Messwerte beinhalten,
Praktisch ist das, was das Applet momentan macht die Messwerte EINER MESSREIHE zu vergleichen.
Was ich jetzt versucht habe war folgendes (ich hoffe ihr könnt mir dabei folgen):
• Man gibt die Anzahl an Messreihen ein (sagen wir hier mal als Beispiel 3); Drückt den StartButton
• JPanel p2 fragt wieviele Messwerte jede Messreihe beinhaltet (Beispiel
• der WeiterButton bringt uns dann zu einer Eingabe, die für jede Messreihe die entsprechenden JTextFields bereithält. (sprich hier: Messreihe 1: 13 TextFields; Messreihe 2: 14 TextFields; Messreihe 3: 154 TextFields)
• dem zugehörig ist dann dein ÜbergebenButton, der dann die Werte ausrechnet
Ich Danke schon mal in Ewiger verbundenheit
Ich hoffe ihr könnt mir kurzfristig helfen.
Ich soll für den Lehrstuhl eine Regressionsanalyse mit Java programmieren. Ich poste einfach mal den Code den ich schon habe.
Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.Console;
import javax.swing.border.EmptyBorder;
//import inf.v3d.obj.Sphere;
//import inf.v3d.view.ViewerPanel;
public class Regressionsanalyse implements ActionListener, MouseListener {
/**
*
*/
private JLabel versuchsreihenAnzahl = new JLabel(
"Anzahl der Versuchsreihen? ");
private JTextField versuchsreihenAnzahlFeld = new JTextField(10);
private JButton startbtn = new JButton("Start");
private JButton rechnen = new JButton("‹bergeben");
private JLabel label1 = new JLabel();
private JPanel p1;
private JPanel p2;
private zeichenFleache p3;
private JScrollPane einRollfeld;
private JFrame frame;
private JMenuBar menu=new JMenuBar();
private double[] aktDaten;
public Regressionsanalyse() {
frame = new JFrame();
frame.setSize(800, 500);
p1 = new JPanel(new GridLayout(1, 2));
p1.add(versuchsreihenAnzahl);
p1.add(versuchsreihenAnzahlFeld);
p1.add(startbtn);
p1.setBorder(new EmptyBorder(10, 10, 10, 10));
p1.setPreferredSize(new Dimension(300, 50));
p2 = new JPanel();
p2.setPreferredSize(new Dimension(250,1000000));
p2.setBackground(Color.LIGHT_GRAY);
p2.add(label1);
p2.setBorder(new EmptyBorder(10, 10, 10, 10));
p2.setVisible(true);
einRollfeld = new JScrollPane(p2,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
einRollfeld.setViewportView(p2);
einRollfeld.setBounds(10,10,200,100);
//p2.add(einRollfeld);
einRollfeld.setVisible(true);
p3 = new zeichenFleache(new Dimension(200,300),new Point(25,25),Color.LIGHT_GRAY,"test");
//ViewerPanel v = new ViewerPanel();
//v.addObject3D(new Sphere());
//p3.add(v, "Center");
//v.setPreferredSize(new Dimension(500, 500));
p3.setPreferredSize(new Dimension(500, 500));
JMenu mav= new JMenu("MEN‹");
JMenuItem open=new JMenuItem("ˆffnen");
JMenuItem save=new JMenuItem("speichern");
save.addActionListener(new speichernBeobachter());
open.addActionListener(new oeffnenBeobachter());
mav.add(open);
mav.add(save);
menu.add(mav);
frame.setJMenuBar(menu);
frame.add(einRollfeld);
frame.add(p1, BorderLayout.NORTH);
frame.add(p3, BorderLayout.EAST);
frame.setTitle("Regressionsanalyse");
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
versuchsreihenAnzahlFeld
.setToolTipText("Bitte geben Sie die Anzahl der Messreihen ein!");
versuchsreihenAnzahlFeld.addActionListener(this);
//Actionsverarbeitung
startbtn.addActionListener(new MesswerteKnopfBeobachter());
}
public static void main(String[] args) {
new Regressionsanalyse();
}
//Funktion zum zeichnen f¸r p2 ï JLabel ("Messwert 1: ") und rechts daneben ein JTextField
public void MesswerteEingabeErstellen(double anzahl_werte,JPanel p2){
p2.add(new JLabel("Bitte Geben sie ihre Messwerte ein:"));
for (int x=1;x<=(int)anzahl_werte ;x++){
JLabel m_wert = new JLabel();
m_wert.setBounds(10, 50, 100, 20);
m_wert.setText("Messwert \t"+x+ "\t:\t");
JTextField dasTextFeld = new JTextField(10);
p2.add(m_wert);
p2.add(dasTextFeld);
System.out.print(x);//Testausgabe
}
p2.add(rechnen);
rechnen.addActionListener(new UebergabeKnopfBeobachter());
frame.repaint();
}
// Innere Klassen zum verwalten der Actionsereignisse
public class MesswerteKnopfBeobachter implements ActionListener {
public void actionPerformed(ActionEvent event)
{
try{
double d = Double.parseDouble(versuchsreihenAnzahlFeld.getText());
label1.setText("Messreihe:");
frame.repaint();
MesswerteEingabeErstellen(d,p2);
}
catch(Exception e){
label1.setText("Bitte eine Zahl eingeben:");
frame.repaint();
System.out.println("falsche eingabe");
}
}
}
//speichern
public class speichernBeobachter implements ActionListener {
public void actionPerformed(ActionEvent event)
{
try{
System.out.println("hier ne speichernfunktion impementieren");
// speichere_werte(aktDaten);
}
catch(Exception e){
}
}
}
//oeffnen
public class oeffnenBeobachter implements ActionListener {
public void actionPerformed(ActionEvent event)
{
try{
System.out.println("hier ne ˆffnen funktion implementieren");
//ˆffne_werte() //m¸ssen dann wie in der actionlistenerFunktion von dem ¸bergebebutton implementiert werden
}
catch(Exception e){
}
}
}
// Innere Klassen zum verwalten der Actionsereignisse
public class UebergabeKnopfBeobachter implements ActionListener {
public void actionPerformed(ActionEvent event)
{
double d;
JTextField help = new JTextField();
Component[] componenten = p2.getComponents();
double[] daten;
int zeahler=0;
for (int k=0;k<componenten.length;k++)
{
if (componenten[k].getClass().getName() =="javax.swing.JTextField" )
{
zeahler++;
}
else ;
}
daten=new double[zeahler];
zeahler=0;
for (int x=0;x<componenten.length;x++)
{
//filtern der Componenten von p2 nach textFeldern um alle werte zu bekommen
if (componenten[x].getClass().getName() =="javax.swing.JTextField" )
{
help = (JTextField)componenten[x];
try{
d = Double.parseDouble(help.getText());
daten[zeahler]=d;
zeahler++;
System.out.println(""+d);
}
catch(Exception e)
{
label1.setText("Der Wert \t"+ help.getText()+"ist kein regul‰rer Wert");
p2.removeAll();
p2.add(label1);
p2.repaint();
frame.repaint();
System.out.println("Bitte echte Werte Eingeben update funktioniert noch nicht");
}
}
else
{
System.out.println("Bitte echte Werte Eingeben" +componenten[x].getClass().getName());
}
}
//Objekt f¸r MessreihenSetzen
MessreiheAuswertung aktMesswerte=new MessreiheAuswertung(daten);
aktDaten=daten;
// an der Stelle ist dann das speichern der objekte in eine Textdatei oder ein Container Mˆglich
p2.removeAll();
p2.add(label1);
label1.setText("Auswertung der Messreihe:");
//System.out.println("Arrithmeteischesmittel:\t"+aktMesswerte.getArithmetischesMittel());//testausgabe
p2.add(new JLabel("Arrithmeteischesmittel:\t"+aktMesswerte.getArithmetischesMittel()));
p2.add(new JLabel("Geometrischesmittel:\t"+aktMesswerte.getGeometrischesMittel()));
p2.add(new JLabel("Standartabweichung:\t"+aktMesswerte.getStandartAbweichung()));
p2.add(new JLabel("Varianz:\t"+aktMesswerte.getVarianz()));
p2.add(new JLabel("Median:\t"+aktMesswerte.getMedian()));
p2.repaint();
p3.setMesswerte(daten);//daten werden an die zeichenFleache ¸bergeben
frame.repaint();
/*for (int l=0;l<daten.length;l++)
{
System.out.println(daten[l]);
}*/ //testausgabe des Datenfeldes
}
}
/*for(int f=0; f<100; f++)
{
//g.drawLine(??,??,??,??);
}*/
/*
*
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}*/
}
Zu meinem (jetzigen Problem):
1) Ich habe durch den Startbutton eine Reihe von Messwerten möglich gemacht, Problem ist aber das bei einer Regressionsanalyse ) zwei oder mehrere MESSREIHEN verglichen werden sollen, die Messwerte beinhalten,
Praktisch ist das, was das Applet momentan macht die Messwerte EINER MESSREIHE zu vergleichen.
Was ich jetzt versucht habe war folgendes (ich hoffe ihr könnt mir dabei folgen):
• Man gibt die Anzahl an Messreihen ein (sagen wir hier mal als Beispiel 3); Drückt den StartButton
• JPanel p2 fragt wieviele Messwerte jede Messreihe beinhaltet (Beispiel
• der WeiterButton bringt uns dann zu einer Eingabe, die für jede Messreihe die entsprechenden JTextFields bereithält. (sprich hier: Messreihe 1: 13 TextFields; Messreihe 2: 14 TextFields; Messreihe 3: 154 TextFields)
• dem zugehörig ist dann dein ÜbergebenButton, der dann die Werte ausrechnet
Ich Danke schon mal in Ewiger verbundenheit
Zuletzt bearbeitet von einem Moderator: