import java.util.*; public class Main { public static void main(String[] args) { Person sc=new Person(); sc.setName("张三"); sc.getName(); } } class Person{ String name; int age; public void setName(String name){ this.name=name; } public String getName(){ return name; } }
时间: 2023-06-05 22:09:08 浏览: 75
这是一个Java程序,其中定义了一个Person类,包含了name和age属性以及setName和getName方法,而在主函数中创建了一个Person对象,并设置了其姓名为"张三",然后获取该Person对象的姓名并输出。
相关问题
package semster2lab9; import java.util.Scanner; public class TestPerson { public static void main(String[] args) { Scanner sc=new Scanner(System.in); Person p[]=new Person[3]; p[0]=new Person(sc.nextLine(),sc.nextLine(),sc.nextInt()); p[1]=new Person(sc.nextLine(),sc.nextLine(),sc.nextInt()); p[2]=new Person(sc.nextLine(),sc.nextLine(),sc.nextInt()); System.out.println("Person 1 is called "+p[0].getName()); System.out.println("They live in "+p[0].getAddress()); System.out.println("Their PPS Number is"+p[0].getppsNo()); p[1].setName("Paul Smyth"); p[1].setAddress("Dublin"); for(int i=0;i<3;i++) { System.out.println("*****PERSONAL DETAILS*****"); p[0].showPerson(); p[1].showPerson(); p[2].showPerson(); } System.out.print(p[2].toString()); } }
这代码的问题可能是输入不匹配。在第 8、11 和 14 行中,您正在尝试通过调用 `nextInt()` 来获取输入,但是如果输入不是整数,就会抛出 `InputMismatchException`。因此,如果您输入了一个不是整数的值,就会发生异常。
为了解决这个问题,您可以考虑使用 `nextLine()` 方法获取输入,并将其转换为适当的类型。例如,您可以像这样修改代码:
```
p[0] = new Person(sc.nextLine(), sc.nextLine(), Integer.parseInt(sc.nextLine()));
p[1] = new Person(sc.nextLine(), sc.nextLine(), Integer.parseInt(sc.nextLine()));
p[2] = new Person(sc.nextLine(), sc.nextLine(), Integer.parseInt(sc.nextLine()));
```
这样,您将首先获取一个字符串,然后将其转换为适当的类型,以避免输入不匹配的问题。
package case1; import java.util.Scanner; public class ObjectTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); // 在测试类中创建Demo类对象d1,传入输入值num1, d1调用toString方法并打印输出该值 // 创建Demo类对象d2,同样传入输入值num1,打印判断d1和d2是否相等(实际是比较地址) /********* Begin *********/ /********* End *********/ // 创建Person类对象p,传入输入值num2,打印判断d1和p是否相等(实际是比较地址) /********* Begin *********/ /********* End *********/ } } class Demo { private int num; public Demo(int num) { this.num = num; } public boolean equals(Object obj) // Object obj = new Demo() { if (!(obj instanceof Demo)) // 判断obj是否和Demo是同类 return false; Demo d = (Demo) obj; // 将父类的引用(Object)向下转换为子类(Demo) return this.num == d.num; } public String toString() { return "Demo:" + num; // 返回对象的值(每一个对象都有自己的特定的字符串) } } class Person { private int num; public Person(int num) { this.num = num; } }
这段代码是一个简单的Java程序,主要涉及了对象的创建、方法的调用、以及对象的比较。在主方法中,先通过Scanner类获取了两个整数值num1和num2,然后创建了一个Demo类的对象d1,将num1作为参数传入构造函数中,调用了该对象的toString方法并输出了返回值。接着创建了另一个Demo类的对象d2,同样将num1作为参数传入构造函数中,然后使用equals方法比较了d1和d2的相等性。最后,创建了一个Person类的对象p,将num2作为参数传入构造函数中,同样使用equals方法比较了d1和p的相等性。
其中,Demo类重写了equals方法和toString方法,equals方法用于比较两个Demo对象的num属性是否相等,toString方法用于返回Demo对象的字符串表示形式。Person类没有重写equals方法,因此默认使用Object类的equals方法进行比较,即比较两个对象的地址是否相等。