如何将参数从另一个类传递给非静态方法?

时间:2018-06-07 06:58:51

标签: java class methods static static-methods

我目前在我的Java类简介中遇到了一个项目,需要我能得到的任何帮助。我需要将一个参数从我的main方法传递给另一个类中的非静态方法,然后将该类的double值打印到控制台。

尽可能简单地建模时,它看起来像这样:

public class UserAccount {

    double accountBalance = 0.0;

    public void addToBalance(double amountToAdd) {
        accountBalance = accountBalance + amountToAdd;
    }

    public double getBalance() {
        return accountBalance;
    }
}

和...

public class Driver {

    public static void main(String[] args) {
        System.out.println("Enter an amount to add to your balance:");
        Scanner sc = new Scanner(System.in);
        double input = sc.nextDouble();

        // I can't figure out these last two lines:

        UserAccount.addToBalance(input);
        System.out.println("Account Balance: " + UserAccount.getBalance());
    }
}

我觉得最后两行理论上应该允许我将扫描输入传递给addToBalance()方法,然后通过main方法将余额显示到控制台。但是,这两行都不起作用,因为它们都调用非静态方法。

上次发生这种情况时,我只是将静态修饰符添加到被调用的方法中。但是,由于规范中列出的方法不包括静态修饰符,因此我的教授从字面上扣除了50分(满分100分)。所以我想我出于某种原因无法做到这一点。

我基本上只是想知道是否有任何方法可以在不使用静态方法的情况下完成所有这些操作?请记住,这是一个介绍性的课程,所以任何可能的解决方案都不应该太复杂(但我会在这方面做任何事情)。如果有人可以帮助我,我将非常感激,因为我现在急需帮助。

2 个答案:

答案 0 :(得分:1)

为了访问非静态方法和变量,您必须创建该类的实例(对象)。在main()方法的顶部添加此内容。

UserAccount u = new UserAccount ();

现在打电话,

u.addToBalance(input);

答案 1 :(得分:0)

如果类不是静态的,那么你需要实例化它

UserAccount ua = new UserAccount ();
ua.addToBalance(input);
System.out.println("Account Balance: " + ua.getBalance());