Java作业 逢7过、成绩选奖、课程类

文章介绍了Java编程中的两个练习:实现逢7过游戏,找出100以内的幸运数字;以及设计一个选课系统,包括课程类的构造方法、成员方法和成绩奖励判定逻辑。
摘要由CSDN通过智能技术生成

目录

Java语句基础作业

逢7过(幸运数字)

 根据成绩判定所获奖励

写一个选课系统的课程类Course


Java语句基础作业

逢7过(幸运数字)

作业要求:

实现找出100以内“逢7过”游戏的正确答案,并将其存入一个数组,最后按照10个一行的形式输出。

  • 提示:共有70个。
  • 逢7过规则:数字中出现7和7的倍数均须跳过。

思路:

1. 定义一个存储幸运数字(跳过数字)的数组 并定义一个count变量记录找到的幸运数字个数

2. 循环给出1-100的数字,根据是否为7的倍数,个位上是否为7, 十位上是否为7来判断是否为幸运数字

3. 十个一行输出

代码实现:

/**
 * ClassName: LuckySevenGame
 * Package:
 * Description:
 *
 * @Author Zorina
 * @Create 2023-09-13 19:29
 * @Version 1.0
 */
public class LuckySevenGame {
    public static void main(String[] args) {
        // 在这里管逢7过的‘7’叫幸运数字,是包含7的数字或者7的倍数,直接跳过
        int[] luckyNumbers = new int[70]; // 存储70个跳过数字的数组
        int count = 0; // 记录已找到的跳过数字

        for (int i = 1; i <= 100; i++) {  //循环给出1-100的数字
            if (i % 7 != 0 && i % 10 != 7 && i / 10 % 10 != 7) { // 个位出现7,十位出现7,7的倍数
                luckyNumbers[count] = i;
                count++;

                if (count == 70) {
                    break; //  找到七十个跳过数字,退出循环
                }
            }

        }
        for (int i = 0; i < luckyNumbers.length; i++) {
            System.out.print(luckyNumbers[i] + "\t");
            if ((i + 1) % 10 == 0) {
                System.out.println(); // 每行输出10个数字

            }

        }
    }
}

 根据成绩判定所获奖励

作业要求:

  • 根据输入的小明的成绩,判断他可以得到的待遇
  • 前提条件:小明有6门课程,需要逐一输入课程成绩。(课程名称分别为“课程1”~“课程6”)
  • 合法性检验:成绩输入超出0~100的区间,要求重新输入。

成绩处理要求:

输出平均分,最高分和最低分的课程名及成绩(可能不止一门)

如果没有不及格的课程,小明可根据其平均分,显示获得的相应奖励:

 成绩==100分,平衡车

 成绩<100但>=90分, 游戏机

 90分>成绩>=80分, 球鞋

 60<=成绩<80分, 加油鸭

如果有不及格,闭门思过!

思路:

1. 定义两个数组,分别存成绩和对应的课程名

2. 获取小明输入并进行合法性检验(do-while)

3. 初始化最高分数最低分数和对应的课程名

4. 计算平均分,遍历课程成绩并每次和当前最大值比较,记录更大的;注意如果有最高最低分课程有多个,需要记录。

5. 判断是否有不及格课程,并作为判断条件加入if()

代码实现:

import java.util.Scanner;

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

        double[] grades = new double[6];
        String[] courseNames = {"课程1", "课程2", "课程3", "课程4", "课程5", "课程6"};

        // 让小明输入成绩,并进行合法性检验
        for (int i = 0; i < 6; i++) {
            do {
                System.out.print("请输入" + courseNames[i] + "的成绩(0~100):");
                grades[i] = scanner.nextDouble();
            } while (grades[i] < 0 || grades[i] > 100);
        }
        scanner.close();

        // 计算并输出平均分、最低分、最高分的课程名及成绩
        double sum = 0; // 用于计算平均分
        double maxGrade = grades[0]; // 初始化最大小成绩,逐步迭代替换赋值
        double minGrade = grades[0];
        String maxCourseName = courseNames[0];
        String minCourseName = courseNames[0];

        for (int i = 0; i < 6; i++) {
            sum += grades[i];

            if (grades[i] > maxGrade) {
                maxGrade = grades[i];
                maxCourseName = courseNames[i];
            } else if (grades[i] == maxGrade && courseNames[i] != (maxCourseName)) {
                maxCourseName += ", " + courseNames[i]; // 同时有多个最高分课程时输出多个
            }

            if (grades[i] < minGrade) {
                minGrade = grades[i];
                minCourseName = courseNames[i];
            } else if (grades[i] == minGrade && courseNames[i]!=(minCourseName)) {
                minCourseName += ", " + courseNames[i]; // 同时有多个最低分课程时输出多个
            }
        }

        double average = sum / 6;

        // 输出平均分、最高分和最低分的课程名及成绩
        System.out.println("平均分:" + average);
        System.out.println("最高分的课程:" + maxCourseName + ",成绩:" + maxGrade);
        System.out.println("最低分的课程:" + minCourseName + ",成绩:" + minGrade);

        // 判断是否有不及格课程
        boolean hasFailingGrade = false;
        for (int i = 0; i < 6; i++) {
            if (grades[i] < 60) {
                hasFailingGrade = true;
                break;
            }
        }

        // 根据成绩判断奖励或闭门思过
        if (!hasFailingGrade) {
            if (average == 100) {
                System.out.println("奖励:平衡车");
            } else if (average >= 90) {
                System.out.println("奖励:游戏机");
            } else if (average >= 80) {
                System.out.println("奖励:球鞋");
            } else if (average >= 60) {
                System.out.println("奖励:加油鸭");
            }
        } else {
            System.out.println("不及格,闭门思过!");
        }
    }
}

写一个选课系统的课程类Course

作业要求:

成员变量:

总选课人次CG,课程编号CID,课程名CName,学分Credit,授课教师CTeacher,选课人数CT,选课学生号数组CStuID[]。

其中:

  1. 总选课人次是静态变量;
  2. 课程编号、课程名、学分为常量(final 修饰);
  3. 每门课最多选课人数40人,未赋值的字符串数组元素默认值为null。

构造方法:

public Course(String C_ID, String C_Name, int C_Credit){ CID=C_ID; CName=C_Name; Credit=C_Credit; CTeacher=”待定”;}

这意味着每次实例化时需要输入3个参数。如 Course c1= new Course(“S2307081”, “JAVA”, 3)

成员方法:

  1. Display(){可以输出当前课程名、课程编号,学分,已选课人数}  //状态显示方法
  2. CGInquiry(){直接返回CG的值}  //查询总选课人次方法,静态方法
  3. CStuIDis(){尝试用for(String stu: CStuID)} // 输出所有选课学生ID方法,
  4. CTake(String Stu_ID) //选课方法  调用Display方法;询问是否确定选该门课,如果选则选课人数+1, 总选课人次+1,添加选课学生号;

编写主方法:

声明多个课程对象,分别为多名学生调用其CTake方法进行选课,一门课程选课结束后输出所有选课学生名单。最后输出该系统目前选课人次数。

思路:根据步骤来即可

注意在何时何处关闭Scanner

代码实现:

/**
 * ClassName: Course
 * Package:
 * Description:
 *
 * @Author Zorina
 * @Create 2023-09-14 16:10
 * @Version 1.0
 */
import java.util.Scanner;
public class Course {
    // 定义成员变量
    static int CG;
    final String CID,CName;
    String CTeacher;
    int CT = 0;
    final int Credit;
    String[] CStuID = new String[40];
    // 构造方法
    public Course(String C_ID, String C_Name, int C_Credit)
    { CID=C_ID; CName=C_Name; Credit=C_Credit; CTeacher= "待定"; }
    // 成员方法
    public void Display(){
        System.out.println("课程名:" + CName +"\t" +"课程编号:" + CID +"\t" +  "学分:" + Credit +"\t" + "已选人数:" + CT);
    }

    public static int CGInquiry(){
        return CG;
    }


    public void CStuIDis() {
        for (String stu : CStuID) {
            if (stu != null) {
                System.out.println("选课学生号:" + stu);
            }
        }
    }
    public void CTake(Scanner scanner,String Stu_ID) {
        Display();
        System.out.println("是否确定选该门课?(是填1/否填0)");
        String userInput = scanner.nextLine(); // 获取输入

        if ("1".equals(userInput)) {  // .equals 用于字符串的检验
            if (CT < 40) {
                CStuID[CT] = Stu_ID;
                CT++;
                CG++;
                System.out.println("选课成功!");
            } else {
                System.out.println("选课人数已满,选课失败!");
            }
        } else {
            System.out.println("选课已取消!");
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        Course course1 = new Course("S2307081", "JAVA", 3);
        Course course2 = new Course("S2307082", "管理信息系统", 4);

        // 学生1选课
        course1.CTake(scanner, "S001");
        course1.CStuIDis();

        // 学生2选课
        course1.CTake(scanner, "S002");
        course1.CStuIDis();

        // 学生3选课
        course2.CTake(scanner, "S003");
        course2.CStuIDis();

        // 查询总选课人次
        int totalCG = Course.CGInquiry();
        System.out.println("总选课人次:" + totalCG);

        scanner.close(); // 关闭Scanner
    }
}









学习过程遇到的问题总结:

1. 用制表符对输出进行排版

2. .equals()是String的方法,可以用于做接收输入内容判断

for (String stu : CStuID) 
// 创建名称为 stu 的String变量
// 将 CStuID 的第一个元素赋值给 stu 并一直重复操作直到所有的元素都被运行
// 按顺次遍历所有元素

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Re.no1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值