如何结合Scanner类与构造器更新Java类的Setter密码(Pwd)
问题修复与代码修正
原代码存在的问题
- 大小写敏感错误:Account类的
verifyPwd方法中,成员变量名为Pwd(大写开头),但代码中写成了this.pwd(小写p),Java对大小写敏感,这会导致编译失败。 - 对象创建语法错误:驱动类中
Account a=new Account(int Pwd);是非法写法,创建对象时需传入具体的初始密码值,而非类型声明。 - 实例方法调用错误:
setPwd是Account类的实例方法,必须通过Account对象(如a.setPwd(...))调用,直接调用会报错。 - 流程逻辑缺失:未设置初始密码,也没有合理的用户交互引导,无法完成密码验证与更新的完整流程。
修正后的完整代码
Account类
class Account { private int pwd; // 统一用小写开头,符合Java命名规范 // 构造器:初始化初始密码 Account(int initialPwd) { this.pwd = initialPwd; } // 修改密码方法:验证旧密码后更新为新密码 public void setPwd(int oldPwd, int newPwd) { if (this.pwd == oldPwd) { this.pwd = newPwd; System.out.println("密码修改成功"); } else { System.out.println("旧密码不匹配,修改失败"); } } // 密码验证方法 public boolean verifyPwd(int inputPwd) { return this.pwd == inputPwd; // 简化逻辑,直接返回判断结果 } }
SbiDriver驱动类
import java.util.Scanner; class SbiDriver { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 1. 设置初始密码(可根据需求改为用户输入) System.out.println("请设置初始密码:"); int initialPwd = scanner.nextInt(); Account account = new Account(initialPwd); // 2. 引导用户输入旧密码和新密码 System.out.println("请输入旧密码:"); int oldPwd = scanner.nextInt(); System.out.println("请输入新密码:"); int newPwd = scanner.nextInt(); // 3. 调用修改密码方法 account.setPwd(oldPwd, newPwd); scanner.close(); } }
修正说明
- 命名规范调整:将成员变量改为
pwd(小写开头),符合Java驼峰命名规范,避免大小写混淆。 - 修复构造器调用:创建Account对象时传入具体的初始密码值,确保对象初始化正确。
- 修正方法调用:通过Account对象
account调用setPwd方法,符合实例方法的调用规则。 - 完善交互流程:添加初始密码设置步骤,引导用户依次输入旧密码和新密码,流程更清晰合理。
- 简化验证逻辑:将
verifyPwd方法的判断逻辑简化为直接返回布尔值,代码更简洁。
内容的提问来源于stack exchange,提问作者Karthi Keyan
相关产品推荐
相关产品推荐

