Не понимаю в чём ошибка. Или её вообще нет и это какой-то баг джавы. Проверял дебагером в IDEA. Если по строчно смотреть, то значению check присваивается true, если бомба не попадает, но если взять и сделать step out или просто запустить программу, она не присвоит значение false, если не попал. Попробуйте, кто-нибудь сами запустите этот код. Просто я делал по заданию, в котором сказано, что нужно заполнить массив field, заполнить массив bombs, а уже потом делать проверку и если не упали бомбы, то по новой перезаполнить массив bombs, в итоге для которого я сделал отдельный метод Reload. Баганную часто кода пометил "/////////////////// ".
public class Car {
public static String robotank = "☖";
public static String empty = "_";
public static String hit = "🎯";
public static int width = 30;
public static int height = 10;
public static String[][] field = new String[height][width];
public static int[][] bombs = new int[height][width];
public static void main(String[] args) {
//заполняем массив bombs с помощью цикла
// for each и цикла while
Reload();
//Заполняем массив field
for (String[] strings : field) {
Arrays.fill(strings, empty);
strings[(int) (Math.random() * width)] = robotank;
}
boolean check = false;
for (int i = 0; i < field.length; i++) {
for (int j = 0; j < field[i].length; j++) {
if (field[i][j].equals(robotank) && bombs[i][j] == 1)
field[i][j] = hit;
/////////////////// if (field[i][j].equals(robotank)) { ///////////////////
/////////////////// check = true; ///////////////////
}
}
if (i != field.length-1)
continue;
if (check) {
Reload();
i = 0;
check = false;
}
}
//Выводим итоговый массив field
for (String[] array2d : field) {
for (String array : array2d) {
System.out.print(array);
}
System.out.println();
}
}
public static void Reload() {
for (int[] row1 : bombs) {
Arrays.fill(row1, 0);
int i = 0;
while (i < 10) {
int bomb = (int) (Math.random() * 30);
if (row1[bomb] == 1)
continue;
else row1[bomb] = 1;
i++;
}
}
}
}