所以,我有一个程序,我需要获取一个数组对象。所以我必须检查那里的每个对象,但是显示错误。我认为这是因为获取空对象不起作用。我该怎么办?我是新来的...
get是this.x的简单返回,但是我认为由于null而中断了
public Sunflower get(int x, int y) {
boolean found=false;
Sunflower sun = null;
for(int i=0; i<MAX && found==false; i++) {
if(array[i].getX() == x && array[i].getY() == y) sun= array[i];
}
return sun;
}
谢谢您的帮助 ---------------------------编辑
添加数组[i]!= null无法正常工作。同样的错误。我认为仅查看不存在的位置可能会带来问题。我更改了数组大小的最大值,更多了逻辑。我需要检查位置,可以说(7,8),所以我看了x和y对象,但是我认为它没有找到任何导致错误的信息。 像这样的东西。
public void update(){
Sunflower sun = game.getSFinPosition(x, y-1);
if(sun!=null&& sun.getVida()!=0) sun.setLife();
}
如果没有找到任何东西,我得到的指配不起作用,但是我尝试在if和none里面写它,所以不知道。
答案 0 :(得分:0)
在尝试访问成员变量之前,应检查null元素。 另外,您可以使用break而不是使用找到的布尔值。
公共向日葵get(int x,int y){
Sunflower sun = null;
for(int i=0; i<MAX; i++) {
if(array[i] && array[i].getX() == x && array[i].getY() == y) {
sun= array[i];
break;
}
}
return sun;
}
答案 1 :(得分:0)
如果要检查所有元素,则应使用 array.length 获取数组的最大索引。您还可以检查元素是否为null并跳过它:
public Sunflower get( int x, int y ) {
boolean found = false;
Sunflower sun = null;
for (int i = 0; i < array.length && found == false; i++) {
if (array[i] != null &&
array[i].getX() == x && array[i].getY() == y) {
sun = array[i];
found = true;
}
}
return sun;
}
答案 2 :(得分:0)
给出了您的代码的工作示例,并进行了一些改进:
public class Main {
public static class Sunflower {
private int x, y;
Sunflower(int x, int y) {
this.x = x;
this.y = y;
}
int getX() {
return x;
}
int getY() {
return y;
}
}
public static class Getter {
private Sunflower[] array = {new Sunflower(1, 0), new Sunflower(0, 1), null, new Sunflower(3, 1)};
Sunflower get(int x, int y) {
for (Sunflower s : array) {
if (s == null) continue;
if (s.getX() == x && s.getY() == y) return s;
}
return null;
}
}
public static void main(String[] args) {
Getter getter = new Getter();
assert getter.get(1, 0) != null;
assert getter.get(1, 0) != null;
assert getter.get(3, 1) != null;
assert getter.get(3, 2) == null;
}
}
您最感兴趣的功能:
Sunflower get(int x, int y) {
for (Sunflower s : array) {
if (s == null) continue;
if (s.getX() == x && s.getY() == y) return s;
}
return null;
}
更改:
found
变量即可返回