"显示java.lang.NullPointerException#34;拆分字符串时

时间:2014-05-11 06:37:11

标签: java nullpointerexception

我在java中并不是那么专业。我正面临着这样的错误:charArrays = s.toCharArray(); 我不知道原因。虽然我的阵列尺寸太大但仍不清楚。

我添加了另一个发送到交叉的功能

 .....
            public void chr_intval(){
            int[] array = new int[100] ;
            float[]af = new float[6]; 
            String [] gf =new String[7]; // for generating generation therefore copying 
            Random randomGenerator = new Random();
            System.out.println("Chromosome     Genes    Integer value       f(x)               f'(x)    Fitness ratio");

            for(int i=1,j=1 ; i<=6; i++,j++){
                array[i] = randomGenerator.nextInt(100); // generate random 6 integers from 1<x<100
                float[] ar2 = new float[array.length];
                ar2[i]= (float)array[i];
                System.out.println("C"+j+   "            "+Genes(array[i])+"   "+array[i]+"              "+f_x(ar2[i])+"            "+fitness_function(f_x(array[i]))+"    ");//+fit_ratio(fitness_function(f_x(array[i])))); // print c1, c2,....

                af = new float[array.length];
            //  gf= new String[array.length];
                af[i]= fitness_function(f_x(array[i]));
                gf[i]= Genes(array[i]);      // send to cross_over


    //          System.out.println(fit_ratio(af));

            }
    //      System.out.print("gf"+gf[2]);
            Cross_over(gf,af);
        }


     public void Cross_over(String[] gf, float[] af) {
    // System.out.print("gf"+gf[3]); all values are coming successfully

    char[] charArrays = new char[1000];

    Character[] characterArray = new Character[charArrays.length];

    int i = 0;

    for(int j = 0; j < af.length; j++) { // comparing fit-funct
        if(af[j] > af[0]){
            af[0]= af[j];
        }
    }
    if(af[0] >= 95) {
        System.out.println("candidate's fitness "+af[0]);
    }
    else{  // start cross-over by tokenizing  the array
        // charArrays[] = gf.toCharArray();

        for (String s : gf) {
            charArrays = s.toCharArray(); // <--- Error here
        }
    }
    for(int y = 0; y < 8; y++) {
        System.out.print( characterArray[y] );
    }
}

2 个答案:

答案 0 :(得分:3)

NPE:

charArrays = s.toCharArray();

表示snull,因此gf中至少有一个元素为空。

您应该在此行之前检查s != null,或者确保永远不要将null元素添加到gf

答案 1 :(得分:0)

试试这个:

for (String s : gf) 
{
    if(s!=null)
    {
        charArrays = s.toCharArray();  
    }
}
相关问题