簡體   English   中英

用java調用/保存方法變量

[英]Calling/saving methods variables with 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;
            }
        }
    }
}

您不應該要求Account類中的值,而應該只在 main 中要求並使用構造函數作為初始值

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;
        }
    }
}

那是因為acc ooject 中的余額沒有用最新值更新:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM