Я пытался написать трассировку кода для этой программы.после многих попыток на бумаге я думал, что понял это, но теперь я снова споткнулся.
В цикле for i=counter
, потому что i=0
и counter=0
, так как он должен быть меньше счетчика, как этот код вообще выполняется?
Я включил свой неполныйкод трассировки ниже.
Цель программы - напечатать 50 уникальных случайных чисел от 1 до 999 в 10 строках по 5. Программа работает отлично. Я просто хочу выяснить, как она работает с помощьютрассировки кода.Я знаю, что это может быть простой проблемой для вас, но я борюсь с этим.Не могли бы вы помочь мне, спасибо.
import java.util.Random;
public class Random50 {
public static void main(String[] args) {
int numbersNeeded = 50;
int[] randomNumbers = new int[numbersNeeded];
int counter = 0;
Random randomGenerator = new Random();
int max = 999;
int min = 1;
while (counter < numbersNeeded) {
int generated = min + randomGenerator.nextInt(max);
boolean found = false;
for (int i = 0; i < counter && !found; i++) {
if (randomNumbers[i] == generated) {
found = true;
}
}
if (!found) {
randomNumbers[counter++] = generated;
}
}
for (int i = 0; i < counter; i++) {
System.out.printf("%03d ",randomNumbers[i] );
if (i > 0 && (i+1) % 5 == 0) {
System.out.println("");
}
}
}
}