Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getter setter无法存储值_Java - Fatal编程技术网

Java getter setter无法存储值

Java getter setter无法存储值,java,Java,我正试图回答这些问题 新帐户选项应实现以下功能: 输入客户详细信息:姓名、地址、生日和联系电话 输入不低于PHP5000的初始存款 随机生成一个四位数的帐号 余额查询选项应实现以下功能: 输入帐号并验证 如果帐号有效,则显示客户端名称和当前帐户 平衡 我试着用setter方法对新帐户选项进行编码,还随机生成了一个四位数的数字,我可以用它在余额查询选项中输入,该选项有getter方法,但显示为空。我尝试调试它,退出if语句后变量返回空 使用主方法displayMainMenu()为选项、n

我正试图回答这些问题

  • 新帐户选项应实现以下功能:

    • 输入客户详细信息:姓名、地址、生日和联系电话
    • 输入不低于PHP5000的初始存款
    • 随机生成一个四位数的帐号
  • 余额查询选项应实现以下功能:

    • 输入帐号并验证
    • 如果帐号有效,则显示客户端名称和当前帐户 平衡
  • 我试着用setter方法对新帐户选项进行编码,还随机生成了一个四位数的数字,我可以用它在余额查询选项中输入,该选项有getter方法,但显示为空。我尝试调试它,退出if语句后变量返回空

    使用主方法displayMainMenu()为选项、newAccount()和fourRandomNumber()初始化

    公共类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());