どのような種類のコレクションも本当に使用できない場合は、ブール演算子を使用することをお勧めします。つまり、次のようなものです。どのポジションも ではない場合、ボードはいっぱいな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 ;
}
これを「SOME ポジションが空でない場合、ボードはいっぱいです」と書くこともできます。
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 を実装するものを使用できます。) たとえば、まだ 9 つの変数が必要な場合:
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;
}
ただし、理想的には、9 つの変数を持たず、事前に位置の数を知る必要のないものが必要であり、配列 (または他の Iterable、おそらく順序付けられたコレクション) だけで作業します。 :
private static Marker positions[9];
static {
for ( int i=0; i < positions.length; i++ ) {
positions[i] = Marker.EMPTY;
}
}
さらに良いことに、リストなどのコレクションを使用できる場合は、反復を記述する必要さえなく、Collection.containsを使用するだけです。
private static List<Marker> positions = /* ... */;
private static boolean isBoardFull() {
return !positions.contains( Marker.EMPTY );
}