用Java调用/保存方法变量

时间:2019-02-02 09:05:51

标签: java

我正在尝试使用Java中的方法制作一个银行程序,它可以很好地通过该程序一次,但是当它返回以重复该过程时,似乎并没有保存以前完成的变量。例如,我从$ 10开始,然后存入$ 5,它显示我有$ 15,但是一旦我返回查看“帐户信息”,它将再次重新启动变量的值,并返回到其原始值$ 10。我如何返回并重复该过程,同时每次都获取更改的值。希望这有意义...

package learning;
import java.util.Scanner;

public class Account {
    Scanner input = new Scanner(System.in);
    double balance;

    public double depos(double x) {
        System.out.println("how much do you want to deposit?");
        x+=input.nextDouble();
        balance=x;
        return balance;
    }
    public double withdraw(double x) {
        System.out.println("how much do you want to withdraw?");
        x-=input.nextDouble();
        balance = x;
        return balance;
    }
    public double info(double x) {
        balance = x;
        return balance;
    }

    public static void main(String[] args) {
        Account acc =  new Account();
        Scanner input = new Scanner(System.in);
        int choice = 0;
        double money;
        System.out.println("enter your initial balance!");
        money = input.nextDouble();

        System.out.println("Welcome!");

        while (choice !=4) {
            System.out.println("1.Deposit");
            System.out.println("2.Withdraw");
            System.out.println("3.Check Account Info");
            System.out.println("4.Exit");
            choice = input.nextInt();

            switch (choice) {
            case 1:
                double pick1 = acc.depos(money);
                System.out.println("you now have Rp " +pick1+"\n");
                break;  
            case 2:
                double pick2 = acc.withdraw(money);
                System.out.println("You now have RP "+pick2+"\n");
                break;
            case 3:
                double pick3 = acc.info(money);
                System.out.println("your current balance is Rp "+pick3+"\n");
                break;
            case 4:
                System.out.println("thank you!");
                break;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您应该不要求在Account类别的值,但在主只和使用构造为初始值

public class Account {
    double balance;

    public Account(double init){
        balance = init;
    }

    public double depos(double val) {
        balance += val;
        return balance;
    }

    public double withdraw(double val) {
        balance -= val;
        return balance;
    }

    public double info() {
        return balance;
    }
}

主要

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int choice = 0;
    System.out.println("enter your initial balance!");
    double money = input.nextDouble();
    Account acc =  new Account(money);

    while (choice !=4) {
        System.out.println("1.Deposit\n2.Withdraw\n3.Check Account Info\n4.Exit");
        choice = input.nextInt();

        switch (choice) {
        case 1:
            System.out.println("how much do you want to deposit?");
            double pick1 = acc.depos(input.nextDouble());
            System.out.println("you now have Rp " +pick1+"\n");
            break;  
        case 2:
            System.out.println("how much do you want to withdraw?");
            double pick2 = acc.withdraw(input.nextDouble());
            System.out.println("You now have RP "+pick2+"\n");
            break;
        case 3:
            double pick3 = acc.info();
            System.out.println("your current balance is Rp "+pick3+"\n");
            break;
        case 4:
            System.out.println("thank you!");
            break;
        }
    }
}

答案 1 :(得分:0)

这是因为 acc 对象中的余额未更新为最新值:)