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;
}
}