Hallo!
ich habe folgende Aufgabe, ich kriege einen Array übergeben und soll den kleinsten Index der Zahl zurückgeben, die am nächsten am arithmetischen Mittel ist. Falls der String leer ist, soll eine IllegalArgumentException geworfen werden.
Mein Problem ist, dass meine Methode bei mehreren gleichen weitentfernten Einträgen, den falschen Index zurück ist. Aber ich versteh nicht wieso! Weil ich ja " <" und nicht "<=" beim Vergleich habe...
Hier auf jeden Fall, was ich geschrieben habe, vielleicht seid ihr ja schlauer! Vielen Dank schonmal für HIlfe!!
ich habe folgende Aufgabe, ich kriege einen Array übergeben und soll den kleinsten Index der Zahl zurückgeben, die am nächsten am arithmetischen Mittel ist. Falls der String leer ist, soll eine IllegalArgumentException geworfen werden.
Mein Problem ist, dass meine Methode bei mehreren gleichen weitentfernten Einträgen, den falschen Index zurück ist. Aber ich versteh nicht wieso! Weil ich ja " <" und nicht "<=" beim Vergleich habe...
Hier auf jeden Fall, was ich geschrieben habe, vielleicht seid ihr ja schlauer! Vielen Dank schonmal für HIlfe!!
Java:
public int getSmallestIndexNearToAverage (int[]array) throws IllegalArgumentException{
int b= array.length;
int sum=0;
int a=0;
if(b==0){
throw new IllegalArgumentException(" Array ist leer.");
}
while (a<b){
sum= sum + array[a];
a++;
}
a=0;
int c= sum/b;
int d=0;
int e=Integer.MAX_VALUE;
int f=0;
while (a<b){
d = Math.abs(c-array[a]);
if ( d<e){
e=d;
f=a;
}
a++;
}
return f;
}