Java getter setter无法存储值
我正试图回答这些问题Java getter setter无法存储值,java,Java,我正试图回答这些问题 新帐户选项应实现以下功能: 输入客户详细信息:姓名、地址、生日和联系电话 输入不低于PHP5000的初始存款 随机生成一个四位数的帐号 余额查询选项应实现以下功能: 输入帐号并验证 如果帐号有效,则显示客户端名称和当前帐户 平衡 我试着用setter方法对新帐户选项进行编码,还随机生成了一个四位数的数字,我可以用它在余额查询选项中输入,该选项有getter方法,但显示为空。我尝试调试它,退出if语句后变量返回空 使用主方法displayMainMenu()为选项、n
- 输入客户详细信息:姓名、地址、生日和联系电话
- 输入不低于PHP5000的初始存款
- 随机生成一个四位数的帐号
- 输入帐号并验证
- 如果帐号有效,则显示客户端名称和当前帐户 平衡
公共类ClientUgang{
公共静态void main(字符串[]args){
显示主菜单();
}
公共静态无效显示主菜单(){
SavingsAccountUgang savingsAccount=新的SavingsAccountUgang();
int选项=0;
while(选项!=7){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“JBank主菜单”);
系统输出打印项次(“[1]新账户”);
系统输出打印项次(“[2]余额查询”);
系统输出打印项次(“[3]存款”);
系统输出打印项次(“[4]收回”);
System.out.println(“[5]客户端配置文件”);
系统输出打印项次(“[6]关闭账户”);
System.out.println(“[7]退出”);
option=scan.nextInt();
如果(选项==1){
newAccount();
}
如果(选项==2){
savingsAccount.balanceInquiry();
}
}
}
公共静态无效newAccount(){
扫描仪扫描=新扫描仪(System.in);
SavingsAccountUgang savingsAccount=新的SavingsAccountUgang();
系统输出打印(“名称:”);
字符串名称=scan.nextLine();
系统输出打印(“地址:”);
字符串地址=scan.nextLine();
系统输出打印(“生日:”);
字符串生日=scan.nextLine();
系统输出打印(“联系电话:”);
String contactNumber=scan.nextLine();
savingsAccount.setAccountName(名称);
savingsAccount.setAddress(地址);
储蓄账户。挫折第一天(生日);
savingsAccount.setContactNumber(contactNumber);
整数存款=0;
同时(存款<5000){
系统输出打印(“初始存款(不低于pP5000):”;
存款=扫描.nextInt();
}
储蓄账户余额(存款);
int-fourDigitNumber=fourRandomNumber(10009000);
savingsAccount.setAccountNo(四位数);
System.out.println(“您的账号:+fourDigitNumber”);
System.out.println();
}
公共静态整数(最小整数,最大整数){
Random rand=新的Random();
int randomNum=rand.nextInt((最大-最小)+1)+min;
返回随机数;
}
}
balanceInquiry()方法所在的类。我的accountName的setter和getter方法在BankAccountUgang类中
public class SavingsAccountUgang扩展BankAccountUgang{
私人国际帐户号码;
私人双平衡;
公共储蓄账户(){
}
public int getAccountNo(){
返回帐号;
}
公共无效setAccountNo(int accountNo){
this.accountNo=accountNo;
}
公共双getBalance(){
收益余额;
}
公共余额(双倍余额){
这个平衡=平衡;
}
公开无效余额查询(){
扫描仪扫描=新扫描仪(System.in);
int accountNumber=0;
做{
系统输出打印(“输入账号:”);
accountNumber=scan.nextInt());
}while(accountNumber!=getAccountNo());
System.out.println(getAccountName());
System.out.println(getBalance());
System.out.println();
}
}
我希望setter方法能够工作,以便调用getter方法
JBank Main Menu
[1] New Account
[2] Balance Inquiry
[3] Deposit
[4] Withdraw
[5] Client Profile
[6] Close Account
[7] Exit
1
Name: John
Address: World
Birthday: Aug 2019
Contact number: 123 1234
Initial deposit(not less than Php5000): 5000
Your Account Number: 6810
JBank Main Menu
[1] New Account
[2] Balance Inquiry
[3] Deposit
[4] Withdraw
[5] Client Profile
[6] Close Account
[7] Exit
2
Enter Account Number: 6810
Enter Account Number: BUILD STOPPED (total time: 27 seconds)
newAccount()
方法中的SavingsAccountUgang
实例是一个局部变量,因此仅对此方法可见。
如果你想在方法之外使用它,你必须在方法之外返回或声明它。你的代码有很多问题 要解决此问题,请按以下步骤进行操作:
newAccount
方法返回新的储蓄帐户,因此将返回类型更改为:displayMainMenu()
方法中,如果用户输入1作为输入,然后使用该实例显示余额,则保存此帐户:setBalance()
方法需要一个参数类型double
,但是您发送了一个类型int
,但这不是错误的原因。此外,您应该在这样的语句中使用this
:
while (accountNumber != this.getAccountNo());
因为您在代码中引用了两个不同的
SavingsAccountUgang
对象。您可以在displayMainMenu()
中新建一个,并在newAccount()方法中创建第二个。它们不引用同一个实例,将具有不同的值int
变量在此处隐式转换为double
。这就是为什么它不应该是任何技术问题。尽管我同意你关于这个的看法。
关键字-调用方法时通常不需要它。此外,由于它是一个简单的getter
OP,因此可以直接访问变量(使用accountNumber!=this.accountNo
)而不是方法调用。
public static void displayMainMenu() {
SavingsAccountUgang savingsAccount = null // don't create object here as you are doing
// Your code
if (option == 1) {
savingsAccount = newAccount();
}
if (option == 2) {
if(savingsAccount == null) {
// throw exception or whatever you want to do.
}
savingsAccount.balanceInquiry();
}
}
while (accountNumber != this.getAccountNo());