Эти петли звучат правильно, или мне следует переключиться на петли for или while? - PullRequest
0 голосов
/ 08 мая 2020

Сейчас я пробую разные типы Java циклов для моей пятилетней программы сравнения зарплат. Пока что, похоже, у меня проблемы с опробованием do-while l oop. Я использую NetBeans для создания своих программ, и когда я пишу там do-while l oop, он вызывает несколько ошибок, которые я не знаю, как исправить. Может быть, моя формулировка звучит неверно, но давайте проверим ее ниже, чтобы увидеть, что нужно переписать:

do {
System.out.println("Enter the salary individual 1 got in year 1: ");
    firstIndividualSalary[0] = scan.nextInt();

System.out.println("Enter the salary individual 2 got in year 1: ");
    secondIndividualSalary[0] = scan.nextInt();

if (firstIndividualSalary[0] == secondIndividualSalary[0]) {
        System.out.println("Error. Try again.");
        areAllDifferent = false;
        input.next();
    }

else {
  areAllDifferent = true;
}

while (!(areAllDifferent));

Если do-while l oop не является правильным выбором для повторного использования пользователя введите ответ, пока ввод не будет правильным, а затем дайте мне знать, будут ли циклы while или for иметь больше смысла в создании полностью безошибочной программы. Я лично не думаю, что do-while l oop вообще может сработать. Мне просто нужно выяснить, как заставить пользователя повторно ввести пару ответов, чтобы они не совпадали друг с другом. И мне нужно решить ту же проблему для расчета общей суммы пятилетних зарплат двух человек. Я был бы признателен, если бы вы взглянули на это и ответили некоторыми предложениями по пересмотру. Спасибо.

1 Ответ

0 голосов
/ 09 мая 2020

Если do-while l oop не является правильным выбором для того, чтобы заставить пользователя повторно вводить ответ до тех пор, пока его ввод не будет правильным, тогда сообщите мне, будут ли циклы while или for иметь больше смысла в построение полностью безошибочной программы.

A do-while полностью подходит для этой цели. Фактически, do-while l oop гарантирует, что код внутри блока do-while будет выполнен хотя бы один раз, что желательно в таких случаях.

Структура кода, как показано ниже:

do {
    areAllDifferent = true;
    System.out.println("Enter the salary individual 1 got in year 1: ");
    firstIndividualSalary[0] = Integer.parseInt(scan.nextLine());

    System.out.println("Enter the salary individual 2 got in year 1: ");
    secondIndividualSalary[0] = Integer.parseInt(scan.nextLine());

    if (firstIndividualSalary[0] == secondIndividualSalary[0]) {
        System.out.println("Error. Try again.");
        areAllDifferent = false;
    } 
} while (!areAllDifferent);

Обратите внимание, что я использовал Integer.parseInt(scan.nextLine()) вместо scan.nextInt(), чтобы избежать проблем с next(), nextInt() et c. как упоминалось здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...