как написать цикл while

#java #while-loop

#java #цикл while

Вопрос:

В настоящее время я создаю простую программу ATM на Java. Я хочу написать цикл while, в котором, когда пользователь вводит неправильный pin-код, пользователю будет предложено ввести его снова, пока не будет подобран PIN-код. Когда pin-код будет подобран, отобразится главное меню.

Я пытался сам, но я не знаю, как это исправить.

 while(userPIN != savedPIN)  
    {
     System.out.print("Please enter your correct PIN : ");
     Scanner again = new Scanner(System.in);
     int pass = again.nextInt();
     break;
    }    
    
    
  

Комментарии:

1. Вы можете использовать один сканер в программе. Неэффективно продолжать воссоздавать сканер.

2. как использовать один сканер?

3. Создайте свой сканер перед циклом и просто используйте его.

4. Возможно, вам нужно назначить userPin, а не pass.

Ответ №1:

Удалите инструкцию `break;’ и обновите пользовательский идентификатор новым выводом следующим образом:

 import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int savedPIN = 4444;
        Scanner input = new Scanner(System.in);
        System.out.println("Enter password");
        int userPIN = input.nextInt();
        double withdraw = 0.0, amount = 0.0, deposit = 0.0;

        while (userPIN != savedPIN) {
            System.out.print("Please enter your correct PIN : ");
            Scanner again = new Scanner(System.in);
            userPIN = again.nextInt();
        }

        while (userPIN == savedPIN) {

            System.out.println(" 1 - Inquire Balance n 2 - Withdraw n 3 - Deposit n 0 - Quit ");


            Scanner inputNum = new Scanner(System.in);
            int number = inputNum.nextInt();
            switch (number) {
                case 1:
                    System.out.println("The current balance is $"   amount);
                    break;

                case 2:
                    System.out.println("Enter the amount to withdraw : ");
                    withdraw = input.nextDouble();
                    if (amount >= withdraw) {
                        amount = amount - withdraw;
                        System.out.println("The current balance is $"   amount);
                    } else {
                        System.out.println("Insufficient balance");
                    }
                    break;

                case 3:
                    System.out.println("Enter the amount to deposit : ");
                    deposit = input.nextDouble();
                    amount = amount   deposit;
                    System.out.println("The current balance is $"   amount);
                    break;

                case 0:
                    System.exit(4);
            }

        }


    }
}
  

Комментарии:

1. Я сделал, но он продолжает просить меня ввести правильный PIN-код, хотя я это сделал.

2. Это то, что я сделал с вашим кодом, и, похоже, все работает, проверьте редактирование

3. Создайте только ОДИН сканер. Воссоздание или создание нескольких не обязательно, это затрудняет чтение кода и увеличивает использование памяти.

Ответ №2:

Ok 2 ошибки:

1) вы тестируете, userPIN != savedPIN но принимаете значение в переменной pass , с которой вы ничего не делаете.

2) удалите разрыв в первом цикле, он всегда будет завершаться без зацикливания.

это должно выглядеть так :

 while(pass!= savedPIN)  
    {
     System.out.print("Please enter your correct PIN : ");
     Scanner again = new Scanner(System.in);
     int pass = again.nextInt();
    }
  

Комментарии:

1. Я попробовал это, но он продолжает просить меня ввести правильный PIN-код, хотя я ввел правильный PIN-код.