Hallo, ich hätte mal eine Anfängerfrage. Ich hab hier eine Methode bzw. eine Klasse und die tut an sich auch was sie soll. Wie man sieht initialisiere ich in der main methode ein array a, das dann mit der Methode medoid ausgewertet wird.
Ich würd das array jetzt aber gerne nicht in der main methode sondern über die commando zeile initialisieren.
Ich weis , dass geht irgendwie , indem man a=args[] setzt oder so. Aber ich komm da nicht wirklich weiter. Könnte mir vielleicht jemand sagen, wie ich so ein array mittels commandozeile eingebe ?
Code:
public class Medoid {
public static double medoid(double[] a){
double summe = 0.0;
for(int i =0; i< a.length; i++){
summe = summe + a[i];
}
double ergebnis = 0.0 ;
double mittelwert = summe / a.length;
double min = Math.abs(a[0]-mittelwert);
/* Hier wird nun der zum Mittelwert amnächsten liegende double Wert
* des Arrays ausgegeben. double min ist hierbei der geringste Abstand
* zumMittelwert.
*/
for(int i =0;i<a.length; i++){
if(min>Math.abs(a[i]-mittelwert)){
min = Math.abs(a[i]-mittelwert);
ergebnis = a[i];
}
}
return ergebnis;
}
public static void main(String[] args){
double[] a = {2.4,5.1,7,4,14.0,8};
System.out.println(medoid(a));
}
}
Ja, das hab ich auch so in etwa gemacht...
Aber ich bekomm beim befüllen des arrays eine Nullpointer exception und meine for schleife wird abgebrochen.
Ich bin halt anfänger und weis noch nicht so genau ob das was ich da vorhabe überhaupt klappen kann.
Meine Idee ist es halt, die Werte an der Stelle i , immer nach und nach in das neue array zu schreiben.
Könnte mir vielleicht jemand sagen, was in Zeile 33 jetzt der Fehler ist? Ich steh echt aufm schlauch.
Code:
public class Medoid {
public static double medoid(double[] a){
double summe = 0.0;
for(int i =0; i< a.length; i++){
summe = summe + a[i];
}
double ergebnis = 0.0 ;
double mittelwert = summe / a.length;
double min = Math.abs(a[0]-mittelwert);
/* Hier wird nun der zum Mittelwert amnächsten liegende double Wert
* des Arrays ausgegeben. double min ist hierbei der geringste Abstand
* zumMittelwert.
*/
for(int i =0;i<a.length; i++){
if(min>Math.abs(a[i]-mittelwert)){
min = Math.abs(a[i]-mittelwert);
ergebnis = a[i];
}
}
return ergebnis;
}
public static void main(String[] args){
double[] testarray = null;
for(int i = 0;i< args.length;i++){
/*testarray[i]*/double x =Double.parseDouble(args[i]);
System.out.println(x);
testarray[i] = x;
//double[] a = {2.4,5.1,7,4,14.0,8};
//System.out.println(medoid(a));
}
// medoid(testarray);
}
}