Java 如何从另一个类中提取变量

Java 如何从另一个类中提取变量,java,getter-setter,Java,Getter Setter,我目前正在创建一个银行应用程序。这样做的目的是让用户输入他们的名称,代码检查是否存在具有该名称的文件(例如john.txt)。如果存在,将提示用户从其银行存款/取款/检查余额/退出,并将其新更新的余额保存到此txt文件中。如果用户不存在,它将创建一个余额为0的txt文件,用户可以在其银行上执行相同的过程。我这部分都很好用 我面临的问题在于下一步。现在,我想创建一个用户已完成的事务列表,并将其添加到另一个txt文件中(例如johnTransactions.txt)。我获取用户名的方式是从我使用扫描

我目前正在创建一个银行应用程序。这样做的目的是让用户输入他们的名称,代码检查是否存在具有该名称的文件(例如john.txt)。如果存在,将提示用户从其银行存款/取款/检查余额/退出,并将其新更新的余额保存到此txt文件中。如果用户不存在,它将创建一个余额为0的txt文件,用户可以在其银行上执行相同的过程。我这部分都很好用

我面临的问题在于下一步。现在,我想创建一个用户已完成的事务列表,并将其添加到另一个txt文件中(例如johnTransactions.txt)。我获取用户名的方式是从我使用扫描仪创建的Reader类中的一个方法。我不知道如何将这个name变量提取/移动到我的Bank类中(这里不确定正确的术语),我将使用它将我的交易列表写入文件名+“transactions.txt”

在我的runner类中,我可以使用account.getName打印John,但当我在bank类中使用account.getName时,它将返回为null。我怀疑问题出在我的代码运行顺序的某个地方,但我似乎无法找出问题所在。我已经在下面附上了我的银行/帐户/跑步者类的一些代码,但请任何人帮助我理解为什么帐户中的getName返回null,而跑步者中的getName返回正确的名称

银行


您已创建帐户对象,但尚未设置名称

Account account = new Account();
因此,
account.getName()
为空,在试图通过getter访问它之前,需要设置
account.setName()


您需要重新登录到
ManageAccount
方法

,这样我的银行类中的account实例就是空的,因为我刚刚在顶部创建了它,并且还没有设置名称。我想,因为我在ManageAccount中使用了setName,所以我可以在别处使用getName访问该名称。它在runner类中返回正确的东西,我也有与您发布的代码完全相同的代码行。这只是我的代码运行顺序中的一个问题吗?那么,在我完全被难倒的情况下,我该如何着手更改它。
它在runner类中返回正确的内容。
你这是什么意思,在RunnerApologies中有打印语句或没有获得名称我应该更清楚。我加了这个。字符串findName=account.getName();System.out.println(“这是名称”+findName);它返回我在上面提到的案例中输入的名称John。
setName(name)这行代码正在编译吗?是的,它编译得很好。我可以使用account.getName()在其他地方访问它,但它在我方法中需要它的bank类中不起作用。
public class Account {

private String name;
private Double balance;
private List<Transaction> transactions = new ArrayList<Transaction>();



public List<Transaction> getTransactions() {
    return transactions;
}

public void setTransactions(List<Transaction> transactions) {
    this.transactions = transactions;
}

Scanner sc = new Scanner(System.in);

Reader reader = new Reader();
Writer writer = new Writer();



public Account(String name, double balance) {
    super();
    this.name = name;
    this.balance = balance;
}

public Account() {
    
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public double getBalance() {
    return balance;
}

public void setBalance(double balance) {
    balance = this.balance;
}

public double Deposit(double balance, double amount) {
    balance = balance + amount;
    return balance;
}

public double Withdraw(double balance, double amount) {
    balance = balance - amount;
    return balance;
}

public void ManageAccount(String name) {
    Bank bank = new Bank();
    try {
        File myObj = new File(name + ".txt");
        
        if (myObj.createNewFile()) {
            File myTransactionObj = new File(name + "Transactions.txt");
            myTransactionObj.createNewFile();
            // If File doesn't exist creates name.txt with 0 balance
            writer.SingleLineWriter(name, "0");
        } else {
            setName(name);
            String line = reader.SingleLineRead(name);

            double balance = Double.parseDouble(line);
            
            double newBalance = bank.ManageBank(balance);

            writer.BalanceAppender(newBalance, name);
            
            

        }

    } catch (IOException e) {
        System.out.println("An error occurred.");
        e.printStackTrace();
    }
    
    
}
public static void main(String[] args) {
        Account account = new Account();
        ScannerClass scanner = new ScannerClass();

        String name=scanner.NameScanner();
        account.ManageAccount(name);






    }
Account account = new Account();