Hallo ich habe folgenden Code:
Das Program berechnet rekursiv, das k-größte Element. Nun bekomme ich, wenn ich mein Array in die drei Teilarrays aufspalte eine Nullpointerexception zurückgeworfen und ich verstehe nicht so ganz wieso. Ich hoffe mir kann da vieleicht jemand helfen:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Quickselect;
import java.util.Random;
/**
*
* @author ich
*/
public class Quickselect2 {
private int[] array;
private int numb;
private int [] low;
private int [] middle;
private int [] high;
public void select(int[] values, int k) {
if (values == null || values.length == 0) {
return;
}
this.array = values;
numb = values.length;
quickselect(array,k);
}
private int quickselect(int[] array, int k) {
Random rnd = new Random();
int a = rnd.nextInt(array.length-1);
int j = 0;
int l = 0;
int m = 0;
for(int i=0; i<=array.length; i++){
if (array[i] < a){
low[j] = array[i];
j++;
}
else if (array[i] > a){
high[l] = array[i];
l++;
}
else {
middle[m] = array[i];
m++;
}
}
if (k <= low.length-1){
return quickselect(low,k);
}
else if(k >= low.length-1 + middle.length){
return quickselect(high,k);
}
else return a;
}
public void random(int [] array){
for(int k=0; k<array.length; k++){
Random r =new Random();
int rand = r.nextInt();
array[k] = rand;
}
}
public static void main(String[] args) {
int k = 3;
int [] array;
array = new int [10];
Quickselect2 quick = new Quickselect2();
quick.random(array);
quick.select(array,k);
}
}
Das Program berechnet rekursiv, das k-größte Element. Nun bekomme ich, wenn ich mein Array in die drei Teilarrays aufspalte eine Nullpointerexception zurückgeworfen und ich verstehe nicht so ganz wieso. Ich hoffe mir kann da vieleicht jemand helfen:
Code:
Exception in thread "main" java.lang.NullPointerException
at Quickselect.Quickselect2.quickselect(Quickselect2.java:39)
at Quickselect.Quickselect2.select(Quickselect2.java:27)
at Quickselect.Quickselect2.main(Quickselect2.java:80)
Java Result: 1