public static void enterInts()
{
int i = 0;
int[] userArray = new int[9];
System.out.println("Enter up to 10 integers, type 0 when done");
for(i = 0; i < userArray.length; i++)
{
if (keyboard.nextInt() != 0)
userArray[i] = keyboard.nextInt();
else
break;
}//for
posOrNeg(userArray);
}//enterInts
Мой профессор ДЕЙСТВИТЕЛЬНО ненавидит операторы break и continue () в циклах, поэтому я хотел бы знать, есть ли способ выйти из этого цикла for после ввода «0» без его использования.
Вам нужно сохранить keyboard.nextInt() внутри переменной, а затем вы можете добавить еще одно условие в цикл for
В вашем сообщении говорится «до 10 целых чисел», но ваш массив принимает только 9.
Один из способов — вызвать nextInt() в условии цикла:
for (int i = 0; i < userArray.length && (userArray[i] = keyboard.nextInt()) != 0; i++);
Это сработает, но ради Бога, пожалуйста, не записывайте свои циклы таким образом. Его профессор может ненавидеть перерывы, но все остальные будут ненавидеть это.
Может быть, профессор усвоит урок.
Будучи профессионалом с 25-летним стажем, более половины этого времени проверив код как коллега и руководитель, я НИКОГДА не одобряю этот код ни в какой производственной системе. Просто ик!
@E-Riz Возможно, стоит держаться подальше от JDK.
Просто замените перерыв; с возвратом;
Хорошо, а как насчет последней строчки: posOrNeg(userArray) ?
Если его профессор ненавидит продолжение и паузу, то наверняка ненавидит и возвращение... 😭
Во-первых, как сказал кто-то другой, вы должны прочитать nextInt() в переменную, чтобы вы могли назначить ее позже. Ваш код запросит число, а затем, если это число не равно нулю, он забудет, каким было число, а затем попросит ввести другое число, которое будет назначено.
Что касается возможных решений: одной из идей было бы переместить цикл в его собственный метод, а затем вы могли бы просто использовать «возврат» вместо «разрыв». По сути, это та же концепция, но без ключевого слова break. Хотя я беспокоюсь, что ему это тоже может не понравиться. Непонятно, почему он не любит брейк, так что трудно сказать.
Другим решением было бы заменить цикл for циклом while, получить следующий ввод в конце цикла, а затем включить в условное выражение цикла число, отличное от нуля.
Причина, по которой профессору не нравится продолжение и прерывание, и, вероятно, возврат, скорее всего, связана с «правилом единственной точки выхода». Профессора всего мира неправильно понимают это правило и стараются радикально избегать любых альтернативных путей. лучший способ бороться с этим аргументом - показать им, почему это не имеет никакого смысла, выбрасывая исключение вместо возврата защитного предложения.
Перерыв; и продолжить; являются лучшим способом управления потоком цикла. В любом случае, это реальность, что профессора во всем мире ненавидят это.
С таким бессмысленным ограничением вы должны проявить творческий подход, если хотите получить код, который не выглядит как дерьмо.
Мое предложение немного запутано и затрудняет понимание кода, но оно ближе всего к «слому»:
int length = 10;
for(i = 0; i < length; i++)
{
i = length; // This produces the same effect as break.
}
Удачи вам в этом, сохраняйте хладнокровие и держите вещи красивыми и чистыми!
Не звоните keyboard.nextInt() два раза за итерацию цикла, вы теряете номера