public class Main {
public static char[][] map;
public static final int SIZE = 5;
public static final int DOTS_TO_WIN = 4;
public static final char DOT_EMPTY = '•';
public static final char DOT_X = 'X';
public static final char DOT_O = 'O';
public static Scanner vvod = new Scanner(System.in);
public static void newMap() {
map = new char[SIZE][SIZE];
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
map[i][j] = DOT_EMPTY;
}
}
}
public static void printMap() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println();
}
System.out.println();
}
public static void human() {
int x, y;
do {
System.out.println("Введите координаты точки (х у)");
x = vvod.nextShort() - 1;
y = vvod.nextShort() - 1;
} while (!freefield(x, y));
map[x][y] = DOT_X;
}
public static void comp() {
int x, y;
do {
x = (int) (Math.random() * 6) - 1;
y = (int) (Math.random() * 6) - 1;
} while (!freefield(x, y));
System.out.println("ход компьютера: x-" + (x + 1) + " у-" + (y + 1));
map[x][y] = DOT_O;
}
public static boolean freefield(int x, int y) {
if (x < 0 || x >= SIZE || y < 0 || y >= SIZE) {
return false;
}
return map[y][x] == DOT_EMPTY;
}
public static boolean fullmap() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (map[i][j] == DOT_EMPTY) return false;
}
}
return true;
}
public static boolean proverka (char symb) {
int x_win = 0, y_win = 0, col=0, row = 0, stop_1, stop_2;
do {
for (col = 0; col < 4; col++) {
if (map[col][row] == symb) x_win++;
else x_win = 0;
}
row++;
if (x_win == 4) break; else x_win = 0;
} while (row!=5) ;
col = 0;
do {
for (row = 0; row < 4; row++) {
if (map[row][col] == symb) y_win++;
else y_win = 0;
}
col++;
if (y_win == 4) break; else y_win = 0;
} while (col!=5) ;
if (x_win == 4 || y_win == 4) return true; else return false;
}
public static void main(String[] args) {
newMap();
printMap();
while (true) {
human();
printMap();
if (proverka(DOT_X));{
System.out.println("Победа человека");
break;
}
if (fullmap()){
System.out.println("Ничья");
break;
}
comp();
printMap();
if (proverka(DOT_O));{
System.out.println("Победа компьютера");
// break;
}
if (fullmap()){
System.out.println("Ничья");
break;
}
}
System.out.println("Game over");
}
В методе Main в цикле While есть вызывается класс proverka. В этом классе есть break, который выводит нас из цикла, если возвращается true. Если false цикл продолжается дальше. Однако:
if (proverka(DOT_X));{
System.out.println("Победа человека");
break;
}
if (fullmap()){
System.out.println("Ничья");
break;
}
Второй IF уже не работает после break и программа говорит, что этот IF - unreachable statement. Уже битый час не могу разобраться почему так, может тут помогут ☺☻
Проблема очевидно тут:
if (proverka(DOT_X)); { if (proverka(DOT_O)); {
^--- и ^----
Во-первых, нужно убрать точку с запятой после условия в if - если условие будет выполняться, ничего не будет происходить. А тот блок, который в логике твоего кода должен выполняться при этом условии - будет выполняться всегда , думай об этом так - если бы в твоем коде вообще не было бы этой строки:
if (proverka(DOT_X));
Таким образом, у тебя программа всегда вылетает из цикла (потому что break в этом блоке находится) и даже не доходит до второго if
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Дело в том, что я раньше парсил локальный JSON в AsyncTaskНо я начал изучать RxJava и пытаюсь распарсить огромный JSON файл из assets таким образом:
Вот Spring MVC это простые сервлетыЯвляется ли реализации jax ws и jax rs основанными на servletax? к примеру те же Jersey и Metro