调用方法,但不会返回值。 Java的

时间:2014-11-27 02:59:09

标签: java variables object methods

所以我有一项任务,我必须在那里建立一个银行账户。长话短说我有一个类在你的方法中有你的行为(存款,取款等),以及一个填充空白的驱动程序(即客户名称,余额等)以及它从另一个类调用方法。 / p>

现在我的问题。举个例子,当我存入时,我的变量会很好地发送到方法并正确地进行数学运算并保持正确的平衡,但是返回余额的新值是一个问题。它仍然与驱动程序中的值相同。

这是我司机的存款代码

 String deposit1 = JOptionPane.showInputDialog ("How much would you like to deposit?");
 int deposit = Integer.parseInt (deposit1);
 myBank.getDeposit(deposit, balance);

这是我的存款方式代码

 public void getDeposit(int deposit, int balance)
{
    if (deposit<0)
    {
        System.out.println ("Invalid Number");
        deposit=0;
    }
    balance =balance + deposit;
}

任何帮助都会非常感激,似乎无法找到任何解决方案而且我已经被困了一段时间

由于

P.S这是我第一次在这些论坛上,如果我做错了,那就很抱歉

P.P.S我的java知识不是那么高,还只是一个初学者

编辑: 我们已经学习了实例变量以及触及返回语句,我们还没有学到任何关于passby的知识。通过返回我的意思是给驾驶员正确的价值,对不起,如果那让你离开

Edit2:非常感谢你用户1717742,终于明白了。我现在知道了。有道理

5 个答案:

答案 0 :(得分:1)

问题是您正在尝试更改变量的副本,而不是您为该方法提供的副本。退出方法时,副本将被销毁,并且您只剩下未更改的原始值。

该方法无法返回值,除非您使用return语句告诉它。

public int getDeposit(int deposit, int balance)
{
    if (deposit<0)
    {
        System.out.println ("Invalid Number");
        deposit=0;
    }
    return balance + deposit;
}

致电: int total = myBank.getDeposit(deposit, balance);

答案 1 :(得分:0)

您可以使用int数据类型添加新的变量调用 dep

int dep = myBank.getDeposit(deposit, balance);

之后,将方法类型从void更改为int,并添加所需变量的return语句:

public int getDeposit(int deposit, int balance)
{
  if (deposit<0)
  {
    System.out.println ("Invalid Number");
    deposit=0;
  }
  balance =balance + deposit;
  return balance;
}

答案 2 :(得分:0)

我不确定你是否真的在做你想做的事情。 对我来说,似乎你想要创建一个名为Bank的类,并在那里有一个私有变量,称为ballance。然后操纵该值的方法..

public static class Bank{
    private int balance = 0;

    // this method won't return any value. it will only change
    // the banks internal state, therefor we write "void"!
    public void deposit(int deposit){
        if(deposit<0){
            // using System.err instead of System.out will be handled differently
            // by java. It is meant to be used for error messages. some consoles make
            // these texts pop out more (like displyaing it in read)
            System.err.println ("Invalid Number");
        }else{
            // balance += deposit is a short way of writing balance = balance + deposit;
            balance += deposit;
        }
    }

    // this method will return an int value to who ever called it.
    // you can tell, because it says int after public
    public int getBalance(){
        return balance;
    }
}

然后是处理银行的主要方法:

Bank bank = new Bank();
bank.deposit(5);
bank.deposit(8);

int balance = bank.getBalance(); // will be 13

System.out.println("balance is "+balance);

有关System.err的更多信息,请参阅oracle docs about System

希望我能帮忙

答案 3 :(得分:0)

从语言的基础开始。但是,请记住,理解问题是达到正确解决方案的唯一真正方法。不要让语言妨碍逻辑。您将足够快地获得语法。你有一个良好的开端。只需找到解决方案就可以轻松搞定,而不是找到解决方案。解决问题的方法比得到答案更重要。请尝试以下链接,了解返回值的基础知识。

http://www.homeandlearn.co.uk/java/java_methods.html

答案 4 :(得分:0)

  1. 您不应将方法命名为getDeposit(),因为返回类型为void。相反,只需将其命名为deposit(),因为您实际上是在执行操作。

  2. 在您的Bank类中使用名为balance的私有实例变量。

  3. balance字段使用getter。

  4. 此代码段应该有效:

    public class BankAccount {
    
        private int balance;
    
        public static void main(String[] args) {
            BankAccount account = new BankAccount();
    
            String deposit = JOptionPane.showInputDialog ("How much would you like to deposit?");
            account.deposit(Integer.parseInt (deposit));
    
            deposit = JOptionPane.showInputDialog ("How much would you like to deposit?");
            account.deposit(Integer.parseInt (deposit));
    
            System.out.println(account.getBalance());
    
        }
    
         public void deposit(int deposit){
             if (deposit < 0){
                 System.out.println ("Invalid Number");
             }else{
                 balance += deposit;
             }   
         }
    
         public int getBalance(){
             return balance;
         }
    }