3 回答
TA贡献1811条经验 获得超5个赞
在尝试访问成员变量之前,您应该检查空元素。您也可以使用 break 而不是使用找到的布尔值。
公共向日葵获取(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;
}
TA贡献1942条经验 获得超3个赞
给定您的代码的工作示例,并进行了一些改进:
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;
}
变化:
带有 foreach 的 for 循环
检查值是否为空
不设置
found
变量就返回否则返回 null
TA贡献1865条经验 获得超7个赞
如果你想检查所有元素,你应该使用array.length来获取数组的最大索引。您也可以检查元素是否为空并跳过它:
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;
}
添加回答
举报