我正在编程海洋课程,这是一项家庭作业,我需要制作一个海洋,其中“ S”是鲨鱼,“ F”是鱼。 海洋是一块木板,所以我使用矩阵来制作,如果在海洋中只有一条鱼和一条鲨鱼,那么鱼就死了,或者如果在鲨鱼周围没有鱼,那么鲨鱼就死了。
但是当我尝试编译时显示给我:
error: not a statement
oceano2[i-1][j-1] == 'F';
^
我的变量...
public class Ocean {
private AquaticAnimal[][] oceano = new AquaticAnimal[][];
private AquaticAnimal[][] oceano2 = new AquaticAnimal[][];
static int defaultCapacity;
我的构造函数...
public Ocean(int dimOceano) {
if (dimOceano > this.defaultCapacity) {
this.oceano = new AquaticAnimal[dimOceano][dimOceano];
this.oceano2 = new AquaticAnimal[dimOceano][dimOceano];
} else {
this.oceano = new AquaticAnimal[defaultCapacity][defaultCapacity];
this.oceano2 = new AquaticAnimal[defaultCapacity][defaultCapacity];
}
}
海洋的方法
public int getCapacity(){
return oceano.length; //regrese numero de filas
}
.
.
.
我不知道如何更好地分析矩阵的所有位置,所以我一个接一个地做。 我必须分析周围是否有鱼或鲨鱼,如果我有一条鱼和鲨鱼,鲨鱼会以鱼为食,如果没有鱼,鲨鱼会死掉,或者只有一些鱼是新鱼。
public void cycle() {
int f = this.oceano.length;
int c = this.oceano[0].length;
for(int i = 1; i < f; i++) {
for(int j = 1; j < c; j++) {
while((j+1 < c) && (i+1 < f)) {
if ((oceano2[i-1][j-1].equals('F'))&&(oceano2[i-1][j].equals(' '))&&(oceano2[i][j-1].equals(' '))&&(oceano2[i][j].equals(' '))) {
oceano2[i-1][j-1] = new AquaticAnimal('F');
} else if ((oceano2[i-1][j-1].equals(' '))&&(oceano2[i-1][j].equals('F'))&&(oceano2[i][j-1].equals(' '))&&(oceano2[i][j].equals(' '))){
.
.
.
这是我的类AquaticAnimal
,只有构造函数和方法...
public class AquaticAnimal{
public static int maxStarveCycles = 0;
private char animal;
private int ciclosSinAlimentar;
public AquaticAnimal(char animal){
if(animal == 'F'){
this.animal = animal;
ciclosSinAlimentar = 0;
} else {
this.animal = animal;
maxStarveCycles = 3;
}
}
public char getTipo(){
return animal;
}
public int getStarveCycles(){
return ciclosSinAlimentar;
}
.
.
.
我改变
==
到
.equals()
和
new AquaticAnimal('F);
但是现在我遇到下一个错误:
error: cannot find symbol
AquaticAnimal.maxStarveCycle = 3;
答案 0 :(得分:1)
您已经关闭。 oceano2[i-1][j-1] == 'F'
试图将AquaticAnimal
与字符F
进行比较。添加呼叫以获取结尾的类型:oceano2[i-1][j-1].getTipo() == 'F'
。
答案 1 :(得分:0)
==
用于比较,=
用于分配。 oceano2[i-1][j-1] == 'F'
是boolean
表达式。将此表达式更改为语句,您将无法为Object分配字符。由AquaticAnimal
运算符初始化new
的适当对象。
更改
oceano2[i-1][j-1] == 'F';
到(参数化构造函数)
oceano2[i-1][j-1] = new AquaticAnimal('F');// in case if its constructor has accept a chracter.
或(默认构造函数)
`oceano2[i-1][j-1] = new AquaticAnimal();`
在您的if语句中,您可以使用getTipo()
方法进行比较
if(oceano2[i-1][j-1].getTipo() == 'F') { // your code }
答案 2 :(得分:-1)
`oceano2` is Object of class `AquaticAnimal`.
因此,要测试是否相等,应使用.equals()
而不是==
。