Эй, ребята, написали программу, состоящую из сервисного меню, точно так же как банковскую карту. Проблема в том, что я использовал метод, называемый doLogin, и использовал логическое значение, так что если ответ == true будет doServiceMenu else, если он ложный, я хочу, чтобы он продолжал получать doLogin.Выбор и методы вызова
Однако это не работает, и я не уверен, если это моя логика, любой обратный бы весьма признателен
`enter code here`import java.util.Scanner;
class TopUp{
//class variable
static Scanner scan = new Scanner (System.in);
static String name = "Joe";
static String cardNumber = "1234 5678 9101 1213";
static double balance = 0;
public static void main(String[] args){
boolean isLoginCorrect = false;
isLoginCorrect = doLogin();
if(isLoginCorrect == true){
doServiceMenu();
}
else if(isLoginCorrect == false){
System.out.println("Incorrect username or password,try again!");
System.out.println();
doLogin();
}
}
public static boolean doLogin(){
String userName = "joe" ;
String password = "123456";
String nameInput;
String pwdInput;
System.out.println("Please enter your Username: ");
nameInput = scan.nextLine();
System.out.println("Please enter your Password: ");
pwdInput = scan.nextLine();
return ((userName.equals(nameInput)) && (password.equals(pwdInput)));
}
public static void doServiceMenu(){
System.out.println("<********************* Services Menu ****************>");
System.out.println("<************** Please Select an option: ***********>");
System.out.println("1> Customer Details");
System.out.println("2> Customer Balance");
System.out.println("3> Top-up");
System.out.println("4> Make A Purchase");
System.out.println("5> Quit");
System.out.println("");
System.out.println("<*************************************************>");
Scanner keyboard = new Scanner(System.in);
String menuSelect = keyboard.nextLine();
switch (menuSelect) {
case "1":
showCustomerDetails();
checkIfUserWantsAnotherTransaction();
break;
case "2":
printBalance();
checkIfUserWantsAnotherTransaction();
break;
case "3":
doTopUp();
checkIfUserWantsAnotherTransaction();
break;
case "4":
makePurchase();
checkIfUserWantsAnotherTransaction();
break;
case "5":
System.out.println("Goodbye!!!");
break;
default:
System.err.println ("Unrecognized option");
break;
}
}
public static void showCustomerDetails(){
System.out.println("Name: " + name);
System.out.println("Card Number : " + cardNumber);
}
public static void printBalance(){
System.out.println("Your balance is : " + balance);
}
public static void increaseBalance(double amount){
balance += amount;
}
public static void decreaseBalance(double amount){
balance -= amount;
}
public static void doTopUp(){
System.out.println("Please enter a Top Up Amount: ");
double amount = scan.nextDouble();
double maxTopUp = 1000 - balance;
if(amount > maxTopUp){
System.out.println("Amount exceedes Max Top Up: ");
}
else{
increaseBalance(amount);
printBalance();
}
}
public static void makePurchase(){
System.out.println("Please enter the purchase amount: ");
double amount = scan.nextDouble();
double purchase = amount - balance;
if(amount > balance){
System.out.println("Sorry Insufficent Funds: ");
}
else{
decreaseBalance(amount);
printBalance();
}
}
public static void checkIfUserWantsAnotherTransaction() {
System.out.println("Would you Like another Service: y/n");
Scanner keyboard = new Scanner(System.in);
String option = keyboard.nextLine();
if(option.equals("y")){
doServiceMenu();
}
else if(option.equals("n")){
System.out.println("Goodbye!!!");
}
}
}
Что именно не работает? – SudoRahul
Будьте осторожны при использовании 'nextLine' после' nextXXX'. – Maroun
Просто из любопытства, какие банковские карты имеют сервисное меню? – vipw