#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-код.