做个开心的码农 发表于 2024-10-18 16:04:13

Java接口

1. 定义一个接口Human,其中有一无参的、返回类型为void的方法speak();定义类Student实现接口,输出学生姓名、学号、学校、专业、兴趣等信息;定义类Worker实现接口,输出工人姓名、工作单位、职务和兴趣信息;主类中定义接口变量,赋值,运用接口回调类中的方法来输出数据。


源代码:

实验运行截图:

2.评价成绩
体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班同学的平均成绩。编写能够满足如下条件的程序:
1)定义一个接口Compute,包含计算平均值的抽象方法。
2)定义一个实Gymnastics现上述接口的用于计算体操比赛选手成绩的类。
3)定义一个类School实现上述接口的用于计算班级平均成绩的类。
4)在主类中通过接口回调分别计算并输出体操选手最后得分和班级考试平均分数。要求打分通过键盘输入,结果输出占6列,前者右对齐,保留三位小数,后者左对齐,保留两位小数。

FishC 发表于 2024-10-18 16:04:37

下面是解决这两个问题的源代码示例:

### 问题1:Java接口

我们将定义一个名为 `Human` 的接口,并定义两个实现此接口的类:`Student` 和 `Worker`。在主类中,我们将使用接口变量通过多态机制来输出信息。

// 定义接口
interface Human {
    void speak();
}

// 实现Student类
class Student implements Human {
    private String name;
    private String studentId;
    private String school;
    private String major;
    private String interest;

    public Student(String name, String studentId, String school, String major, String interest) {
      this.name = name;
      this.studentId = studentId;
      this.school = school;
      this.major = major;
      this.interest = interest;
    }

    @Override
    public void speak() {
      System.out.println("姓名: " + name);
      System.out.println("学号: " + studentId);
      System.out.println("学校: " + school);
      System.out.println("专业: " + major);
      System.out.println("兴趣: " + interest);
    }
}

// 实现Worker类
class Worker implements Human {
    private String name;
    private String company;
    private String position;
    private String interest;

    public Worker(String name, String company, String position, String interest) {
      this.name = name;
      this.company = company;
      this.position = position;
      this.interest = interest;
    }

    @Override
    public void speak() {
      System.out.println("姓名: " + name);
      System.out.println("工作单位: " + company);
      System.out.println("职务: " + position);
      System.out.println("兴趣: " + interest);
    }
}

// 主类
public class Main {
    public static void main(String[] args) {
      Human student = new Student("张三", "123456", "某某大学", "计算机科学", "编程");
      Human worker = new Worker("李四", "某某公司", "工程师", "旅游");

      student.speak();
      System.out.println();
      worker.speak();
    }
}

### 问题2:评价成绩

我们定义一个名为 `Compute` 的接口,它将用于计算平均值。我们将在类 `Gymnastics` 和 `School` 中实现这个接口,并在主方法中演示如何计算并输出分数。

import java.util.Arrays;
import java.util.Scanner;

// 定义接口
interface Compute {
    double computeAverage(double[] scores);
}

// 实现Gymnastics类
class Gymnastics implements Compute {
    @Override
    public double computeAverage(double[] scores) {
      Arrays.sort(scores);
      double sum = 0;
      for (int i = 1; i < scores.length - 1; i++) {
            sum += scores;
      }
      return sum / (scores.length - 2);
    }
}

// 实现School类
class School implements Compute {
    @Override
    public double computeAverage(double[] scores) {
      double sum = 0;
      for (double score : scores) {
            sum += score;
      }
      return sum / scores.length;
    }
}

// 主类
public class Main {
    public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);

      // Gymnastics Score Calculation
      System.out.println("请输入体操比赛选手的评分数量:");
      int n1 = scanner.nextInt();
      double[] gymnastScores = new double;
      System.out.println("输入每个评委的分数:");
      for (int i = 0; i < n1; i++) {
            gymnastScores = scanner.nextDouble();
      }

      Compute gymnastics = new Gymnastics();
      double finalGymnastScore = gymnastics.computeAverage(gymnastScores);
      System.out.printf("体操选手最后得分: %6.3f\n", finalGymnastScore);

      // School Score Calculation
      System.out.println("请输入班级同学的人数:");
      int n2 = scanner.nextInt();
      double[] classScores = new double;
      System.out.println("输入每个同学的考试分数:");
      for (int i = 0; i < n2; i++) {
            classScores = scanner.nextDouble();
      }

      Compute school = new School();
      double classAverageScore = school.computeAverage(classScores);
      System.out.printf("班级考试平均分数: %-6.2f\n", classAverageScore);

      scanner.close();
    }
}

以上代码分别解决了两个问题,并确保符合题目的要求。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: Java接口