Пытаюсь решить старую программу кодового замка. Вопрос ниже. Я написал некоторый код, но пока он печатает только набор возможных комбинаций, которые всегда содержат первое число, имеющее 36. Я, честно говоря, очень запутался в том, где взять его туда, где он должен быть.
«Представьте, что вам нужно открыть стандартный замок с кодовым набором, но вы не знаете комбинацию и у вас нет пары болторезных станков. Напишите программу на Java в BlueJ с методом, который печатает все возможные комбинации, чтобы вы могли распечатать их на лист бумаги и отметьте каждый из них по мере попытки. Предположим, что номера на каждом циферблате находятся в диапазоне от нуля до тридцати шести, и для открытия замка требуются три последовательных числа. Предположим, замок не очень хороший и любой число, которое не более чем на два от правильного числа в каждой цифре, также будет работать. Другими словами, если комбинация 17-6-32, то 18-5-31, 19-4-32, 15-8-33 и многие другие комбинации также открывают замок. Напишите другой метод, который распечатает минимальный список комбинаций, которые вам понадобятся, чтобы гарантировать открытие замка ".
/**
* A method that prints all possible combinations of the lock.
*/
public void combination(int combo)
{
int a;
int b;
int c;
a = 0;
while (a <= 36)
{b = 0;
while (b <= 36)
{c = 0;
while (c <= 36)
{
System.out.println(a + " " + b + " " + c);
c = c + 1;
}
b = b + 1;
}
a = a + 1;
}
}
}




Ваша программа работает нормально. Я предполагаю, что происходит то, что BlueJ ограничивает размер консоли. Перейдите к Options и включите Unlimited Buffering. Это должно позволить вам увидеть все возможные комбинации. Если вы отлаживаете его и проходите через него построчно, вы видите, что выводятся все комбинации, но из-за ограничения на количество отображаемых строк это выглядит так, как будто первое число всегда 36, потому что вы получаете только последнее такое количество строк.
Боковое примечание: вы никогда не используете параметр combo int, который вы передаете в комбинацию (), поэтому на вашем месте я бы просто удалил его.
Я все еще полностью озадачен последним. «Напишите другой метод, который распечатает минимальный список комбинаций, которые вам понадобятся, чтобы гарантировать открытие замка».
Извините, я не совсем понимаю ... скорее всего, потому что я упорно учился весь день: / Я завершил вторую часть, со всеми комбинациями в пределах 2 цифр комбинации, я изменил начальное значение на 2 и добавленная стоимость ++ 3 ;. Я просто ломаю голову, пытаясь придумать способ распечатать минималистичный список комбинаций.
Думаю, поэтому я могу запутаться. ха-ха Он говорит, что нужно создать еще один метод после того, как два от одного. «Напишите другой метод, который распечатает минимальный список комбинаций, которые вам понадобятся, чтобы гарантировать открытие замка».
Верный. А теперь мне нужен третий метод, который распечатает минималистичный список. Я пытаюсь понять это, но теперь я начинаю думать, что это бессмысленный вопрос, учитывая другие 2 метода.
Хорошо, я думаю, я запутался, ха-ха. Большое спасибо за то, что нашли время мне помочь. Все еще новичок в программировании, но это так весело!
Я думаю, что цикл while - это проблема для 36, всегда находящегося в первой цифре?