如何在创建Java Client对象时同步让用户创建Compte对象作为其属性
解决方案
首先修正Compte类构造方法的bug:原构造方法接收solde参数但直接赋值为0,应改为使用传入的参数值:
package bankpackage; public class Compte { private long numero; private float solde; public Compte(long numero, float solde) { super(); this.numero = numero; this.solde = solde; // 修正此处,使用传入的solde参数 } // 添加getter方法用于访问私有属性 public long getNumero() { return numero; } public float getSolde() { return solde; } }
接下来修改Client类,新增一个无需传入Compte的构造方法,在构造方法内部引导用户输入账户信息并创建Compte对象:
package bankpackage; import java.util.Scanner; public class Client { private String nom; private String emploi; private Compte compte; // 保留原构造方法,兼容原有使用场景 public Client(String nom, String emploi, Compte compte) { this.nom = nom; this.emploi = emploi; this.compte = compte; } // 新增构造方法:创建Client时同步创建Compte public Client(String nom, String emploi) { this.nom = nom; this.emploi = emploi; Scanner scanner = new Scanner(System.in); System.out.println("请为该客户创建银行账户:"); System.out.print("输入账户号码:"); long numero = scanner.nextLong(); System.out.print("输入初始余额:"); float solde = scanner.nextFloat(); this.compte = new Compte(numero, solde); scanner.close(); } // 添加getter方法查看账户信息 public Compte getCompte() { return compte; } }
使用示例
在主类中直接创建Client对象,程序会自动引导创建关联的Compte:
package bankpackage; public class Main { public static void main(String[] args) { // 直接创建Client,无需提前创建Compte Client client = new Client("张三", "程序员"); // 验证账户是否创建成功 System.out.println("客户账户号码:" + client.getCompte().getNumero()); System.out.println("客户账户余额:" + client.getCompte().getSolde()); } }
如果需要优化代码结构,可以把创建Compte的用户输入逻辑抽成独立方法,让Client构造方法调用该方法,进一步提升代码可读性。
内容的提问来源于stack exchange,提问作者sherdean
相关产品推荐
相关产品推荐

