1、同桌匹配题
源代码如下:
package org.jsoft.test_1;
public class Student {// 创建学生类并设定各种属性以及构造函数以便初始化时便赋值
private String name;
private double height;
private double weight;
Student() {
}
Student(String name, double height, double weight) {
this.name = name;
this.height = height;
this.weight = weight;
}
String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
double getHeight() {
return height;
}
void setHeight(double height) {
this.height = height;
}
double getWeight() {
return weight;
}
void setWeight(double weight) {
this.weight = weight;
}
@Override
public boolean equals(Object obj) {// 此时学生类创建对象被当作参数传入,此处含有隐式向上转化,//类似于数据类型的转换,如int与double计算一般
// ,下面的转回Object其子类Student
// (转回Student类才能调用Student类的属性进行比较)也同理,转换从下到上是隐式转换是自动的,而从上到下是需要强制转换的,所以
boolean b = false;// 创建布尔型局部变量并赋初值
if (obj == null) {// 判断此对象是否为空
b = false;
} else if (obj instanceof Student) {// 判断obj是不是属于Student类....类似使用
// 父类引用指向子类创建对象,具有子类特征,如子类的函数重写调用
Student s = (Student) obj;// 将其强制转换回Student类,以便调用数据进行比对
if (this.name.equals(s.name) && this.weight == s.weight
&& this.height == s.height)// 属性比对
b = true;
}
return b;// 返回结果
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "姓名:" + name + '\n' + "体重:" + weight + '\n' + "身高:" + height;
}// toString 函数的重写,显示全部属性的字符串型表示形式
public static void main(String[] args) {
Student s1 = new Student("杨锐科", 59, 177);//调用有参构造函数,创建对象同时并赋初始值
Student s2 = new Student("蔡立欣", 55, 172);
Student s3 = new Student("杨锐科", 59, 177);//此处s3与s1相同,以便后面调用验证重写的equals //函数的正确性
System.out.println(s1);//由toString函数遇到Syste.out.print..将自动调用,此处即为输出对象s1
//各项属性
System.out.println(s2);
System.out.println(s3);
System.out.println("学生s1和其同桌s2是否为同一人判定结果:");
System.out.println(s1.equals(s2));//判断s1与与s2是否相同
System.out.println("学生s1和其同桌s3是否为同一人判定结果:");
System.out.println(s1.equals(s3));//判断s1与与s3是否相同
}
}
执行效果:
2、
源代码如下:
package org.jsoft.test_1;
import java.util.Scanner;
public class MyException1 extends Exception {
public MyException1() {
super("Java作业还没写完,还不能玩王者荣耀!");
}// 默认构造函数
public MyException1(String reason) {
super(reason);
}// 有参构造函数
public void Check(int i) throws MyException1 {
if (i == 1) {
System.out.println("恭喜,你可以玩游戏了!");
} else {
throw new MyException1("不能玩游戏的详细原因是作业还没写完,作业优先级比较高");// 因为Super是调用父类的构造函数。而重写的构造函数里面参数类型是String
// ,所以此处即为构造函数重载,此处即为有参函数的初始化
}// 此处的内容即为有参构造函数的reason
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
MyException1 m1 = new MyException1();
System.out.println("请输入作业检查情况:1-完成,2-未完成");
while (true) {
int i = in.nextInt();
try {
m1.Check(i);
} catch (MyException1 e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
System.out.println("此轮评定已经结束!");
}
}
}
}
package org.jsoft.test_1;
import java.util.Scanner;
public class MyException2 extends RuntimeException {
public MyException2() {
super("课还没上完不能玩游戏不能睡觉");
}
public MyException2(String reason) {
super(reason);
}
public void check(int i) {
if (i == 1) {
System.out.println("恭喜,你可以去玩游戏了!");
} else {
throw new MyException2("学什么学,学习有什么意思,走咱们开黑去,今晚上王者");
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
MyException2 m2 = new MyException2();
System.out.println("请输入作业检查情况:1-完成,2-未完成");
while (true) {
int i = in.nextInt();
m2.check(i);
}
}
}
执行效果:
MyException1:
无构造函式重载情况下(即为红色字部分不写):
调用有参构造函数重载情况下(输入 String reason部分 ):
MyException2:
同MyException1;
无重载
重载: