Java 如何从另一个类中提取变量
我目前正在创建一个银行应用程序。这样做的目的是让用户输入他们的名称,代码检查是否存在具有该名称的文件(例如john.txt)。如果存在,将提示用户从其银行存款/取款/检查余额/退出,并将其新更新的余额保存到此txt文件中。如果用户不存在,它将创建一个余额为0的txt文件,用户可以在其银行上执行相同的过程。我这部分都很好用 我面临的问题在于下一步。现在,我想创建一个用户已完成的事务列表,并将其添加到另一个txt文件中(例如johnTransactions.txt)。我获取用户名的方式是从我使用扫描仪创建的Reader类中的一个方法。我不知道如何将这个name变量提取/移动到我的Bank类中(这里不确定正确的术语),我将使用它将我的交易列表写入文件名+“transactions.txt” 在我的runner类中,我可以使用account.getName打印John,但当我在bank类中使用account.getName时,它将返回为null。我怀疑问题出在我的代码运行顺序的某个地方,但我似乎无法找出问题所在。我已经在下面附上了我的银行/帐户/跑步者类的一些代码,但请任何人帮助我理解为什么帐户中的getName返回null,而跑步者中的getName返回正确的名称 银行Java 如何从另一个类中提取变量,java,getter-setter,Java,Getter Setter,我目前正在创建一个银行应用程序。这样做的目的是让用户输入他们的名称,代码检查是否存在具有该名称的文件(例如john.txt)。如果存在,将提示用户从其银行存款/取款/检查余额/退出,并将其新更新的余额保存到此txt文件中。如果用户不存在,它将创建一个余额为0的txt文件,用户可以在其银行上执行相同的过程。我这部分都很好用 我面临的问题在于下一步。现在,我想创建一个用户已完成的事务列表,并将其添加到另一个txt文件中(例如johnTransactions.txt)。我获取用户名的方式是从我使用扫描
您已创建帐户对象,但尚未设置名称
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();