如果你真的不能使用任何类型的集合,你可能想要使用一些布尔运算符。即,类似于以下内容。如果没有位置,则板已满Marker.EMPTY
,因此您可以简单地返回position1 != Marker.EMPTY && position2 != Marker.EMPTY && ...;
。它不是那么漂亮,但它仍然比大块简洁得多if/else if/.../else
。
private static boolean isBoardFull() {
return position1 != Marker.EMPTY &&
position2 != Marker.EMPTY &&
position3 != Marker.EMPTY &&
position4 != Marker.EMPTY &&
position5 != Marker.EMPTY &&
position6 != Marker.EMPTY &&
position7 != Marker.EMPTY &&
position8 != Marker.EMPTY &&
position9 != Marker.EMPTY ;
}
您也可以将其写为“如果某些位置不是空的,则董事会已满”:
private static boolean isBoardFull() {
return !( position1 == Marker.EMPTY ||
position2 == Marker.EMPTY ||
position3 == Marker.EMPTY ||
position4 == Marker.EMPTY ||
position5 == Marker.EMPTY ||
position6 == Marker.EMPTY ||
position7 == Marker.EMPTY ||
position8 == Marker.EMPTY ||
position9 == Marker.EMPTY );
}
如果有其他可用的东西,有几个选项会更合适。例如,您可以for
在包含位置的数组上使用循环?(你实际上可以使用一个数组,或者任何实现 Iterable 的东西。)例如,如果你仍然需要有九个变量:
private static Marker position1 = Marker.EMPTY;
private static Marker position2 = Marker.EMPTY;
private static Marker position3 = Marker.EMPTY;
private static Marker position4 = Marker.EMPTY;
private static Marker position5 = Marker.EMPTY;
private static Marker position6 = Marker.EMPTY;
private static Marker position7 = Marker.EMPTY;
private static Marker position8 = Marker.EMPTY;
private static Marker position9 = Marker.EMPTY;
private static Marker positions[] = new Marker[] { position1, position2, position3,
position4, position5, position6,
position7, position8, position9 };
private static boolean isBoardFull() {
for ( Marker position : positions ) {
if ( position == Marker.EMPTY ) {
return false;
}
}
return true;
}
理想情况下,您不会有九个变量,并且您需要不需要提前知道位置数量的东西,并且您只使用数组(或其他 Iterable,可能是有序集合) :
private static Marker positions[9];
static {
for ( int i=0; i < positions.length; i++ ) {
positions[i] = Marker.EMPTY;
}
}
更好的是,如果您可以使用诸如 List 之类的 Collection,您甚至不需要编写迭代,您只需使用Collection.contains:
private static List<Marker> positions = /* ... */;
private static boolean isBoardFull() {
return !positions.contains( Marker.EMPTY );
}