Array über die Kommando zeile eingeben

  • Themenstarter Themenstarter Danjo
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

Danjo

Gast
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));
		
	}
}
 
also mir ist soweit klar, das man das in etwa so ein gibt
medoid(args[0]);
Aber medoid will ja double werte und keinen string?
 
erstell dir ein neues array mit der gleichen länge wie args. dann kannst du die werte aus args in doubles konvertieren und in a speichern ...
 
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);
		
		
		
	}


}
 
sorry, der fehler liegt in zeile 36 denk ich
und wenn ich am anfang schreibe
testarray.length=args.length
das geht auch ned
 
da musst halt ein neues array passender länge erstellen und testarray zuweisen:
Code:
testarray = new double[args.length];
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben