Java如何通过JOptionPane输入对话框创建Person类对象并实现要求功能
代码报错核心原因
- 测试类中误用不存在的
Forening类作为对象类型和构造方法名,你定义的实体类是Person,所有对象创建都应该用Person - Person类的
age属性定义为public不符合封装规范,建议改为private - 你当前写了5个构造方法,需求要求4个,调整为常用的4个即可
- 测试类中少创建1个Person对象,未满足4个不同构造方法的要求
- 缺少年龄输入的合法性校验,用户输入非数字会直接抛出类型转换异常
修改后完整代码
Person类
public class Person { // 统一私有属性符合封装要求 private String name; private String adress; private int age; // 4个构造方法符合需求 public Person(String name, String adress, int age) { this.name = name; this.adress = adress; this.age = age; } public Person(String name, int age) { this.name = name; this.age = age; this.adress = ""; } public Person(String name, String adress) { this.name = name; this.adress = adress; this.age = 0; } public Person(String name) { this.name = name; this.adress = ""; this.age = 0; } // 对应get/set访问方法 public void setName(String name) { this.name = name; } public void setAdress(String adress) { this.adress = adress; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public int getAge() { return age; } public String getAdress() { return adress; } // toString方法 public String toString() { return "姓名: " + name + " 年龄: " + age + " 地址: " + adress; } }
TestClass类
import javax.swing.JOptionPane; public class TestClass { public static void main(String[] args) { // 5. 弹窗获取用户输入创建Person对象 String name = JOptionPane.showInputDialog("请输入姓名:"); String adress = JOptionPane.showInputDialog("请输入地址:"); int age = 0; // 年龄合法性校验 while (true) { String ageStr = JOptionPane.showInputDialog("请输入年龄:"); try { age = Integer.parseInt(ageStr); if (age >= 0) break; JOptionPane.showMessageDialog(null, "年龄不能为负数,请重新输入"); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, "请输入合法的数字年龄"); } } Person p1 = new Person(name, adress, age); JOptionPane.showMessageDialog(null, "用户输入创建的对象:\n" + p1.toString()); // 6. 创建4个使用不同构造方法的Person对象 // 构造方法1:(姓名,年龄) Person p2 = new Person("Johanna", 20); JOptionPane.showMessageDialog(null, "构造方法(姓名,年龄)创建的对象:\n" + p2.toString()); // 构造方法2:(姓名,地址) Person p3 = new Person("John", "JavaScript大街1号"); JOptionPane.showMessageDialog(null, "构造方法(姓名,地址)创建的对象:\n" + p3.toString()); // 构造方法3:(姓名) Person p4 = new Person("Sandra"); JOptionPane.showMessageDialog(null, "构造方法(姓名)创建的对象:\n" + p4.toString()); // 构造方法4:(姓名,地址,年龄) Person p5 = new Person("李明", "北京朝阳区", 30); JOptionPane.showMessageDialog(null, "构造方法(姓名,地址,年龄)创建的对象:\n" + p5.toString()); } }
修改后的代码完全满足所有开发要求,每个对象都会通过弹窗调用toString展示数据,同时兼容异常输入场景。
内容的提问来源于stack exchange,提问作者BananaSweden
相关产品推荐
相关产品推荐

