Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇语;方法“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;_Java_Methods_Undefined - Fatal编程技术网

Java 爪哇语;方法“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;

Java 爪哇语;方法“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;,java,methods,undefined,Java,Methods,Undefined,我正在建立一个简单的遗传算法。我做了一个“个人”课程,如下所示 package simpleGA; public class Individual { public static int defaultGeneLength = 64; private static byte genes[] = new byte[defaultGeneLength]; private int fitness = 0; public void

我正在建立一个简单的遗传算法。我做了一个“个人”课程,如下所示

package simpleGA;

public class Individual {
    
    public static int defaultGeneLength = 64;
    
    private static byte genes[] = new byte[defaultGeneLength];
    
    private int fitness = 0;
    
    public void generateIndividual(){
        for (int i = 0; i < defaultGeneLength; i++){
            byte gene = (byte) Math.round(Math.random());
            genes[i] = gene;
        }
    }
    
    public byte getGene(int index) {
        return genes[index];
    }
    
    public int size(){
        return genes.length;
    }
    
    public int getFitness(){
        if (fitness == 0){
            fitness = FitnessCalc.getFitness(this);
        }
        return fitness;
    }
}
package simpleGA;

import java.util.Scanner;

public class FitnessCalc {

    static byte[] solution = new byte[64];
    
    static String newSolution;
    
    static Scanner input = new Scanner(System.in);
    
    static void setSolution(){
        do{
            newSolution = null;
            System.out.println("Please enter a string of '1's and '0's of length 64.");
            newSolution = input.next();
        }
        while(newSolution.length() != 64);
        solution = new byte[newSolution.length()];
        for (int i = 0; i < newSolution.length(); i++) {
            String character = newSolution.substring(i, i + 1);
            solution[i] = Byte.parseByte(character);
            }
    }
    
    static int getFitness(Individual individual){
        int fitness = 0;
        for (int i = 0; i < solution.length && i < individual.size(); i++) {
            if (individual.getGene(i) == solution[i]) {
                fitness++;
            }
        }
        return fitness;
    }
}
错误是在
Population
方法中调用
generateIndividual
方法时出现的,说明与其他两个方法相同:

“未为类型Individual定义generateIndividual()方法”


generateIndividual
方法是在“Individual”类中定义的。

对于任何想知道的人,我通过稍微重写代码来解决这个问题。我将
getFitness
方法移到了“个人”类,这似乎奏效了。在此之后,我确保“个人”类只使用自己类中的方法,这样类就不会相互依赖。

这是一些奇怪的代码。类A使用类B,类B使用类A。这意味着您可能需要重新编译这两个类,从单个,因为这可能是一个仍然使用旧类的类。您应该能够同时重新编译这两个类:
javac simpleGA/*.java
最好重新设计此代码,以便只有一个类依赖于另一个类。感谢您的反馈。我重新编译、清理并重建了项目,出现了另一个错误,我在编辑中已经描述了这个错误。如果我找不到解决方案,那么我会重写代码,这样类之间的依赖性就会降低。
package simpleGA;

public class Population {

    Individual[] individuals;
    
    public Population (int populationSize, boolean initialise){
        individuals = new Individual[populationSize];
        if (initialise){
            for (int i = 0; i < size(); i++){
                Individual newIndividual = new Individual();
                newIndividual.generateIndividual();
                saveIndividual(i, newIndividual);
            }
        }
    }
    
    public int size(){
        return individuals.length;
    }
    
    public void saveIndividual(int index, Individual indiv){
        individuals[index] = indiv;
    }
}