鱼C论坛

 找回密码
 立即注册
查看: 380|回复: 1

[已解决]Java接口

[复制链接]
发表于 2024-10-18 16:04:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


源代码:

实验运行截图:

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

### 问题1:Java接口

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

  1. // 定义接口
  2. interface Human {
  3.     void speak();
  4. }

  5. // 实现Student类
  6. class Student implements Human {
  7.     private String name;
  8.     private String studentId;
  9.     private String school;
  10.     private String major;
  11.     private String interest;

  12.     public Student(String name, String studentId, String school, String major, String interest) {
  13.         this.name = name;
  14.         this.studentId = studentId;
  15.         this.school = school;
  16.         this.major = major;
  17.         this.interest = interest;
  18.     }

  19.     @Override
  20.     public void speak() {
  21.         System.out.println("姓名: " + name);
  22.         System.out.println("学号: " + studentId);
  23.         System.out.println("学校: " + school);
  24.         System.out.println("专业: " + major);
  25.         System.out.println("兴趣: " + interest);
  26.     }
  27. }

  28. // 实现Worker类
  29. class Worker implements Human {
  30.     private String name;
  31.     private String company;
  32.     private String position;
  33.     private String interest;

  34.     public Worker(String name, String company, String position, String interest) {
  35.         this.name = name;
  36.         this.company = company;
  37.         this.position = position;
  38.         this.interest = interest;
  39.     }

  40.     @Override
  41.     public void speak() {
  42.         System.out.println("姓名: " + name);
  43.         System.out.println("工作单位: " + company);
  44.         System.out.println("职务: " + position);
  45.         System.out.println("兴趣: " + interest);
  46.     }
  47. }

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

  53.         student.speak();
  54.         System.out.println();
  55.         worker.speak();
  56.     }
  57. }
复制代码


### 问题2:评价成绩

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

  1. import java.util.Arrays;
  2. import java.util.Scanner;

  3. // 定义接口
  4. interface Compute {
  5.     double computeAverage(double[] scores);
  6. }

  7. // 实现Gymnastics类
  8. class Gymnastics implements Compute {
  9.     @Override
  10.     public double computeAverage(double[] scores) {
  11.         Arrays.sort(scores);
  12.         double sum = 0;
  13.         for (int i = 1; i < scores.length - 1; i++) {
  14.             sum += scores[i];
  15.         }
  16.         return sum / (scores.length - 2);
  17.     }
  18. }

  19. // 实现School类
  20. class School implements Compute {
  21.     @Override
  22.     public double computeAverage(double[] scores) {
  23.         double sum = 0;
  24.         for (double score : scores) {
  25.             sum += score;
  26.         }
  27.         return sum / scores.length;
  28.     }
  29. }

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

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

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

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

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

  56.         scanner.close();
  57.     }
  58. }
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-10-18 16:04:37 | 显示全部楼层    本楼为最佳答案   
下面是解决这两个问题的源代码示例:

### 问题1:Java接口

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

  1. // 定义接口
  2. interface Human {
  3.     void speak();
  4. }

  5. // 实现Student类
  6. class Student implements Human {
  7.     private String name;
  8.     private String studentId;
  9.     private String school;
  10.     private String major;
  11.     private String interest;

  12.     public Student(String name, String studentId, String school, String major, String interest) {
  13.         this.name = name;
  14.         this.studentId = studentId;
  15.         this.school = school;
  16.         this.major = major;
  17.         this.interest = interest;
  18.     }

  19.     @Override
  20.     public void speak() {
  21.         System.out.println("姓名: " + name);
  22.         System.out.println("学号: " + studentId);
  23.         System.out.println("学校: " + school);
  24.         System.out.println("专业: " + major);
  25.         System.out.println("兴趣: " + interest);
  26.     }
  27. }

  28. // 实现Worker类
  29. class Worker implements Human {
  30.     private String name;
  31.     private String company;
  32.     private String position;
  33.     private String interest;

  34.     public Worker(String name, String company, String position, String interest) {
  35.         this.name = name;
  36.         this.company = company;
  37.         this.position = position;
  38.         this.interest = interest;
  39.     }

  40.     @Override
  41.     public void speak() {
  42.         System.out.println("姓名: " + name);
  43.         System.out.println("工作单位: " + company);
  44.         System.out.println("职务: " + position);
  45.         System.out.println("兴趣: " + interest);
  46.     }
  47. }

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

  53.         student.speak();
  54.         System.out.println();
  55.         worker.speak();
  56.     }
  57. }
复制代码


### 问题2:评价成绩

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

  1. import java.util.Arrays;
  2. import java.util.Scanner;

  3. // 定义接口
  4. interface Compute {
  5.     double computeAverage(double[] scores);
  6. }

  7. // 实现Gymnastics类
  8. class Gymnastics implements Compute {
  9.     @Override
  10.     public double computeAverage(double[] scores) {
  11.         Arrays.sort(scores);
  12.         double sum = 0;
  13.         for (int i = 1; i < scores.length - 1; i++) {
  14.             sum += scores[i];
  15.         }
  16.         return sum / (scores.length - 2);
  17.     }
  18. }

  19. // 实现School类
  20. class School implements Compute {
  21.     @Override
  22.     public double computeAverage(double[] scores) {
  23.         double sum = 0;
  24.         for (double score : scores) {
  25.             sum += score;
  26.         }
  27.         return sum / scores.length;
  28.     }
  29. }

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

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

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

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

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

  56.         scanner.close();
  57.     }
  58. }
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 13:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表