Кто нибудь, объясните мне пожалуста, почему вывод "1" нужно запускать через цикл "while"? Почему нельзя через "for"?
puh163rus1990@gmail.com
24 уровень
Вопрос
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
5 января 2022, 22:29
Прикрепи задачу к вопросу
0
puh163rus1990@gmail.com
6 января 2022, 04:57
package com.javarush.task.pro.task05.task0529;
import java.util.Arrays;
/*
Галаксианские роботанки (3)
*/
public class Solution {
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) {
for (int i = 0; i < field.length; i++) {
Arrays.fill(field[i], empty);
}
for (int i = 0; i < field.length; i++) {
int j = (int) (Math.random() * width);
field[i][j] = robotank;
}
for (int i = 0; i < bombs.length; i++) {
Arrays.fill(bombs[i], 0)
}
for (int i = 0; i < bombs.length; i++) {
for (int j = 0; j <= 10; j++) {
int bombCount = (int)(Math.random() * width);
if (bombs[i][bombCount] == 0) {
bombs[i][bombCount] = 1;}
}
}
for (int i = 0; i < field.length; i++) {
for (int j = 0; j < field[i].length; j++) {
System.out.print(field[i][j]);
}
System.out.println();
}
}
}
0
LiuboviExpert
4 июля 2023, 15:01
во первых у вас цикл от 0 до <=10, то есть 11, т.к. и 0 и 10 входит в цикл.
во вторых, счетчик в цикле for идет до if и поэтому, если выпадает рандомно, повторно, тот же номер, бомба не присваивается ячейке, а счетчик сработал и в итоге в ряду меньше 10 бомб.
for (int i = 0; i < bombs.length; i++) {
int bombCount = 10;
while (bombCount > 0) {
int j = (int) (Math.random() * width);
if (bombs[i][j] == 0) {
bombs[i][j] = 1;
bombCount--;
}
}
}
в цикле while счетчик в конце, только если выполнены if
0