0.描述
在一個(gè)返回值為void方法中使用了return。這句話(huà)的意思是在一個(gè)并不期望得到返回值的方法中使用了 **return; ** 語(yǔ)句。
1.問(wèn)題描述
BlockView 類(lèi)中包含 int x,與 int y 兩個(gè)屬性,在方法中執(zhí)行完對(duì)相應(yīng)BlockView對(duì)象的處理后有時(shí)會(huì)將x、y設(shè)置為-1, 而代碼②中由于執(zhí)行了return;語(yǔ)句,造成在方法結(jié)束時(shí)未執(zhí)行清理語(yǔ)句blocks.clear();,導(dǎo)致這些被置為-1的對(duì)象還存在于blocks中,進(jìn)而導(dǎo)致下次進(jìn)入這個(gè)方法時(shí),由于一些BlockView對(duì)象的x、y值為-1,導(dǎo)致代碼 ① 部分會(huì)出現(xiàn)數(shù)組下標(biāo)為-1的異常。
類(lèi)似關(guān)于return的問(wèn)題我已經(jīng)遇到2回了╮(╯▽╰)╭敢不敢再粗心點(diǎn)、
2.代碼示例
private boolean beginMoveToLeft(List<BlockView> blocks) {
if(blocks==null ||blocks.size()==0) {
return ;
}
if(blocks.size() == 2){
...
} if(blocks.size() == 3) { //
BlockView b0 = blocks.get(0);
BlockView b1 = blocks.get(1);
BlockView b2 = blocks.get(2);
int x0 = b0.getLocation()[0];//
int x1 = b1.getLocation()[0];//
int x2 = b2.getLocation()[0];//x坐標(biāo)
int y = b0.getLocation()[1]; //y坐標(biāo)
if(b0.isEquals(b1.getPower())) {//②
...//對(duì) b0 b1 b2 分別進(jìn)行操作
... //將 他們的x y 置為-1
dyadicArray[x0][y] = -1; // ① 二維數(shù)組矩陣記錄位置
return ;
}
if(b1.isEquals(b2.getPower())) {
...//
}else{
}
} else if(blocks.size() == 4) {
...
}
blocks.clear();//**************重點(diǎn)***************
}
3.總結(jié)
啰里啰嗦一大堆,總結(jié)起來(lái)一句話(huà):“使用return要當(dāng)心,看看后面有沒(méi)有因?yàn)樘崆敖K止而未執(zhí)行到的語(yǔ)句”。
END
將開(kāi)發(fā)中遇到的問(wèn)題記錄下來(lái);再遇到奇怪問(wèn)題來(lái)看一眼;想必會(huì)有啟發(fā);