Я не буду делиться переработанным кодом, но дам вам некоторые идеи и примеры, которые вы должны сделать. Я думаю, что это будет более полезно для вашего обучения.
Вы должны найти то же условие и извлечь их из нескольких веток в одну. Я рекомендую вам начинать с внутренних условий и после того, как вы вышли на улицу.
Давайте рассмотрим ветку с условием y == 0
:
if(x == 0) {
if(mine[x + 1][y] >= 5) {
mine[x][y] += 1;
}
if(mine[x][y + 1] >= 5) {
mine[x][y] += 1;
}
}
//upper right corner
else if(x == m - 1) {
if(mine[x - 1][y] >= 5) {
mine[x][y] += 1;
}
if(mine[x][y + 1] >= 5) {
mine[x][y] += 1;
}
//mid of first row
else {
if(mine[x - 1][y] >= 5) {
mine[x][y] += 1;
}
if(mine[x + 1][y] >= 5) {
mine[x][y] += 1;
}
if(mine[x][y + 1] >= 5) {
mine[x][y] += 1;
}
}
Вы видите, что вы проверяете mine[x + 1][y] >= 5
, когда x == 0
или в else
ветке. Вы можете объединить два условия в одно, и оно будет выглядеть как x < m-1
, а теперь код будет выглядеть следующим образом:
if(x < m-1 && mine[x + 1][y] >= 5) {
mine[x][y] += 1;
}
if(x == 0) {
if(mine[x][y + 1] >= 5) {
mine[x][y] += 1;
}
}
//upper right corner
else if(x == m - 1) {
if(mine[x - 1][y] >= 5) {
mine[x][y] += 1;
}
if(mine[x][y + 1] >= 5) {
mine[x][y] += 1;
}
//mid of first row
else {
if(mine[x - 1][y] >= 5) {
mine[x][y] += 1;
}
if(mine[x][y + 1] >= 5) {
mine[x][y] += 1;
}
}
Продолжайте с каждым оператором if, где вы используете x
в условии. когда вы закончите sh с x
, выполните те же действия с условиями с y
. Извлеките общие части из нескольких ветвей.
И о части, где вы печатаете результат. Пожалуйста, подумайте, что вы должны сделать. Вы должны напечатать *
или mine[x][y]
зависит от mine[x][y]==5
, а пробелы или new_line (System.out.println()
) зависят от x == m - 1
. Теперь подумайте, как это реализовать.