1.动手动脑
这里的两个方法基本上是一致的,形参的个数和算法相同,名字也一样。但是形参的类型不同,返回值的类型也不同,用到了方法的重载
2.课后作业
package exam;
import java.util.Random;
import java.util.Scanner;
class exam04 {
public static void main(String[] args) {
print();
}
// 随机生成30道四则运算题并答题
public static void print() {Random r = new Random();Scanner sc = new Scanner(System.in);int count = 0; // 题目计数int correct = 0; // 答对数int wrong = 0; // 答错数String[] notation = {"+", "-", "×", "÷"};int[] store1 = new int[50];int[] store2 = new int[50];for (int i = 0; i < 30; i++) {int index = r.nextInt(4);int num1 = r.nextInt(50) + 1;int num2 = r.nextInt(50) + 1;boolean check = judge(num1, num2, count + 1, store1, store2,index,i);if (check) {i--;continue;}store1[count] = num1;store2[count] = num2;//输出题目System.out.print((count + 1) + ". " + num1 + notation[index] + num2 + "=");int answer = sc.nextInt();// 计算正确答案int right = 0;switch (index) {case 0: right = num1 + num2; break;case 1: right = num1 - num2; break;case 2: right = num1 * num2; break;case 3: right = num1 / num2; break;}// 判断对错if (answer == right) {correct++;} else {wrong++;System.out.println("出现错误,正确答案是:" + right);}count++;}// 输出统计结果System.out.println("\n答题结束!");System.out.println("总题数:" + count);System.out.println("答对:" + correct);System.out.println("答错:" + wrong);double rate = (correct * 100.0) / count;System.out.printf("正确率:%.2f%%\n", rate);sc.close();
}
public static boolean judge(int num1, int num2, int count, int[] store1, int[] store2,int index,int i) {// 检查除法结果是否为整数if (index == 3 && num1 % num2 != 0) {i--;return true;}// 检查是否重复for (int j = 0; i < count - 1; j++) {if (num1 == store1[j] && num2 == store2[j]) {return true;}}// 检查减法结果是否为负数if (num1 - num2 < 0) {return true;}// 检查乘法结果是否为四位数if (num1 * num2 >= 1000){return true;}// 检查除数是否为0if (num2 == 0){return true;}return false;
}
}