首页 > 解决方案 > 如何从 java 中的另一个方法正确引用变量?

问题描述

我不知道我应该如何引用 .toString() 方法中的变量。我一直在想办法做到这一点。它是公开的,所以我不明白为什么不共享它。导入 java.util.Scanner;

class Donation {

public static void main(String[] args) {

    Donation uw1 = new Donation("University of Washington", 600.75, true);

    Donation uw2 = new Donation("University of Washington", 40, true);

    Donation sj = new Donation("Snap Judgment", 30, false);

    Donation tal = new Donation("This American Life", 40, true);

    Donation mc = new Donation("Microphone Check", 99.99, false);

    System.out.println(uw1.toString());
    System.out.println(uw2.toString());
    System.out.println(sj.toString());
    System.out.println(tal.toString());
    System.out.println(mc.toString());
}

public Donation(String organization, double amount, boolean tax) {
    double v= amount;
    String org = organization;
    boolean b= tax;

}

public String toString(){
    if (!v){
        return "$"+v+": "+org;
    }
    else if (b) {
        return "* $" + v + ": " + org;
    }
    else{
        return "error";
    }
}

标签: javamethods

解决方案


您在构造函数中设置局部变量:

public Donation(String organization, double amount, boolean tax) {
    double v= amount;
    String org = organization;
    boolean b= tax;
}

你知道吗,因为这些变量只存在于构造函数中,一旦构造函数结束,变量就会随之消失,这就是你问题的症结所在。相反,在构造函数之外和类中声明这些变量。

public class Donation {

    private double v;
    private String org;
    private boolean b;

然后是的,在构造函数中设置字段,但不要重新声明它们。

public Donation(String organization, double amount, boolean tax) {
    v= amount;
    org = organization;
    b= tax;
}

然后,您可以在 toString 方法中使用这些字段保存的值。


推荐阅读