如何在用户输入 "Incorrect" 后重置 double、int、float 等的值

How to reset the value of a double, int, float etc after an "Incorrect" input by the user

我的问题与我的类似于 ATM 的代码行有关。当前余额为 10000,我所写的内容向用户显示一条消息,如果他们取款超过给定余额,则为 Insufficient balance。但是,当 Inquiring balance 余额现在 < 允许余额时,余额会继续变化。我的问题是,当向用户显示 Insufficient balance 消息时,我应该如何重置余额的双精度值?

这是我的代码。

import java.util.Scanner;

class app {
  public static void main(String[] args)
  {
    long pin = 2927942074l;
    double balance = 10000.0;
    int attempts = 3;

    System.out.println("Please enter your pin.");

    while (attempts > 0) {
    Scanner keyboardpin = new Scanner(System.in);
    long input = keyboardpin.nextLong();

    if (input == pin) {
          System.out.println("Correct");
          System.out.println("Welcome to your ATM");
        while (true) { // Keep printing your options unless "Quit" is chosen

          int a = 1;
          int b = 2;
          int c = 3;
          int d = 0;

            System.out.println(a + " - Inquire Balance");
            System.out.println(b + " - Withdraw");
            System.out.println(c + " - Deposit");
            System.out.println(d + " - Quit");
            System.out.println("Please select what you want to do.");

          Scanner menuselect = new Scanner(System.in);
          int menuinput = menuselect.nextInt();

          if (menuinput == a) {
              System.out.println(balance);
              continue;
          }
          if (menuinput == b) {
            System.out.println("Please enter a withdrawal amount.");
          Scanner withdrawamount = new Scanner(System.in);
          double withdrawbalace = withdrawamount.nextDouble();
          balance = (balance - withdrawbalace);
          if (withdrawbalace > balance)
            System.out.println("Insufficient balance");
          if (withdrawbalace <= balance)
            System.out.println("Youre new balance is " + balance);
          }
          if (menuinput == c) {

          }
          if (menuinput == d) {
              break;
          }
      if (attempts == 0) {
          System.out.println("Maximum number of attempts exceeded");
          }
        }
      } else {
      System.out.println("Wrong");
      attempts--;
      System.out.println("You have " + attempts + " attempts remaining.");
      }
    }
  }
}

减去金额前先检查用户是否有足够的余额。

if (menuinput == b) {
    System.out.println("Please enter a withdrawal amount.");
    Scanner withdrawamount = new Scanner(System.in);
    double withdrawbalace = withdrawamount.nextDouble();
    if (withdrawbalace > balance)
        System.out.println("Insufficient balance");
    if (withdrawbalace <= balance)
        balance = (balance - withdrawbalace);
        System.out.println("Youre new balance is " + balance);
}

你的主要问题在上一个回答中已经解决了,但是你的代码逻辑有一些错误。我已经帮你修好了。

import java.util.Scanner;

class app {

    public static void main(String[] args) {
        final long pin = 2927942074L;
        double balance = 10000.0;
        int attempts = 3;

        System.out.println("Please enter your pin.");
        Scanner keyboard = new Scanner(System.in);

        while (attempts > 0) {
            long input = keyboard.nextLong();

            if (input == pin) {
                System.out.println("Correct");
                System.out.println("Welcome to your ATM");

                // Keep printing your options unless "Quit" is chosen
                while (true) {
                    int a = 1;
                    int b = 2;
                    int c = 3;
                    int d = 0;

                    System.out.println(a + " - Inquire Balance");
                    System.out.println(b + " - Withdraw");
                    System.out.println(c + " - Deposit");
                    System.out.println(d + " - Quit");
                    System.out.println("Please select what you want to do.");

                    int menuInput = keyboard.nextInt();

                    if (menuInput == a) {
                        System.out.println(balance);

                    } else if (menuInput == b) {
                        System.out.println("Please enter a withdrawal amount.");
                        double withdrawBalance = keyboard.nextDouble();

                        if (balance >= withdrawBalance) {
                            balance -= withdrawBalance;
                            System.out.println("Your new balance is " + balance);
                        } else System.out.println("Insufficient balance");

                    } else if (menuInput == c) {
                        // Deposit code here
                    } else if (menuInput == d) break;
                }

            } else {
                attempts--;

                if (attempts == 0) {
                    System.out.println("Maximum number of attempts exceeded");
                    break;
                }
                System.out.println("Wrong");
                System.out.println("You have " + attempts + " attempts remaining.");
            }
        }
        keyboard.close();
    }
}

这里有一些提示...

  1. 尽量选择有意义的变量名。
  2. 如果变量有一个常量值使它成为final
  3. 如果变量名由两个或多个单词组成,则第二个单词的第一个字母大写(例如menuInput
  4. 如果您检查不同情况下的相同条件,您可以使用 switchifelse ifelse
  5. 永远不要忘记关闭您用来释放内存的对象

祝你好运