Hallo noch mal!
Ich habe schon seit Tagen ein Problem, finde aber keine Lösung.
Ich brauche unbedingt Hilfe!
In meinem Programm gibt es 2 Mögligkeiten wie die Daten in eine JTable reinkommen.
Einmal werden die Daten vom Benutzer eingegeben, einmal aus einer csv-Datei importiert.
Danach kommt tabellePruefen(); und datenBerechnen();. Dabei läuft bei den csv-Daten alles ok, bei den Benutzer-Daten aber treten Probleme auf (bei Stichprobenvarianz und Kovarianz kommt 0,0 raus).
Warum werden die Tabellendaten unterschiedlich behandelt?
Hilft mir bitte, ich weiß echt nicht mehr weiter!
Ich habe schon seit Tagen ein Problem, finde aber keine Lösung.
Ich brauche unbedingt Hilfe!
In meinem Programm gibt es 2 Mögligkeiten wie die Daten in eine JTable reinkommen.
Einmal werden die Daten vom Benutzer eingegeben, einmal aus einer csv-Datei importiert.
Danach kommt tabellePruefen(); und datenBerechnen();. Dabei läuft bei den csv-Daten alles ok, bei den Benutzer-Daten aber treten Probleme auf (bei Stichprobenvarianz und Kovarianz kommt 0,0 raus).
Warum werden die Tabellendaten unterschiedlich behandelt?
Hilft mir bitte, ich weiß echt nicht mehr weiter!
Code:
public void tabellePruefen()
{
if (tabelle.isEditing())
{
tabelle.getCellEditor().stopCellEditing();
}
boolean abbruch = false;
double inhaltx = 0, inhalty = 0;
int row = tableModel.getRowCount();
xWerte = new double[row];
yWerte = new double[row];
int i;
while(ok == false)
{
for (i = 0; i < row ; i++)
{
Object x = tableModel.getValueAt(i,1);
Object y = tableModel.getValueAt(i,2);
if(x==null || y==null)
{
JOptionPane.showMessageDialog(panelGebundeneHochrechnung, "Bitte alle Zellen der Tabelle ausfühlen!",
null, JOptionPane.ERROR_MESSAGE, null );
abbruch = true;
}
if (abbruch == false)
{
try
{
xWerte[i] = Double.parseDouble(x.toString().replace(',','.'));
yWerte[i] = Double.parseDouble(y.toString().replace(',','.'));
}
catch(NumberFormatException error)
{
JOptionPane.showMessageDialog( panelGebundeneHochrechnung, "Bitte nur Zahlen in die Tabelle eintragen!",
null, JOptionPane.ERROR_MESSAGE, null );
abbruch = true;
}
}
}
if(abbruch == true)
{
break;
}
ok = true;
}
Code:
public void datenBerechnen()
{
umfangn_t = xWerte.length;
xquer_t = fachkonzept.Stichprobenverfahren.getMittelwert(xWerte);
yquer_t = fachkonzept.Stichprobenverfahren.getMittelwert(yWerte);
varianzx_t = fachkonzept.Stichprobenverfahren.getStichprobenvarianz(xWerte);
varianzy_t = fachkonzept.Stichprobenverfahren.getStichprobenvarianz(yWerte);
kovarianz_t = fachkonzept.Stichprobenverfahren.getKovarianzStichprobe(xWerte, yWerte);
}
Code:
public static double getMittelwert(double[] w)
{
double summeW = 0;
int n = w.length;
for(int i = 0; i < n; i++)
{
summeW = summeW + w[i];
}
double mittelwert = summeW/n;
return mittelwert;
}
public static double getStichprobenvarianz(double[] w)
{
double summeW = 0;
double summeWquadrat = 0;
int n = w.length;
for(int i = 0; i < n; i++)
{
summeW = summeW + w[i];
summeWquadrat = summeWquadrat + w[i]*w[i];
}
double mittelwert = summeW/n;
double stichprobenverianz = (summeWquadrat - (summeW * summeW) / n) / (n - 1);
System.out.println(mittelwert);
System.out.println(stichprobenverianz);
return stichprobenverianz;
}
Zuletzt bearbeitet: