(2022级)成都工业学院Java程序设计(JAVA)实验一:流程控制

 写在前面

1、基于2022级软件工程/计算机科学与技术实验指导书

2、代码仅提供参考

3、如果代码不满足你的要求,请寻求其他的途径

运行环境

window11家庭版

IntelliJ IDEA 2023.2.2

jdk17.0.6

实验要求

1、 控制台菜单。要求如下:

1) 在 Exp01_ x 类中添加一个方法 menu_x,用于显示下面各实验题目,并调它们的方 法;

2) 以菜单形式显示各实验题目,如:0.结束 1.面积和周长 2.成绩和等级;

3) 如果输入的题号不是菜单中所列数字序号,要明确提示是负数或超范围,并显示菜 单让用户重新选择;

4) 各实验题目执行完成后,继续显示菜单,直到用户选择 0 结束 menu_x 方法;

5) 本方法由 Main 类的 main 方法调用。

2、 面积和周长。要求如下:

1) 在 Exp01_ x 类中添加一个方法 areaPerimeter_x,功能是当输入的两个数都大于 0 且小于等于 30 时,则输出矩形的面积和周长;如果只有一个数大于 0 且小于等 于 30 时,则输出圆的面积和周长;如果两个数均小于等于 0 或者大于 30 时,则 提示输入数据无效;

2) 本方法由 Exp01_ x 类的 menu_x 方法调用。

3、 成绩和等级。要求如下:

1) 在 Exp01_ x 类中添加一个方法 grade_x,功能是打印某学生一学期的 Java,数据库 和英语的成绩和等级(优、良、中、及格和不及格),并计算出平均成绩。

2) 本方法由 Exp01_ x 类的 menu_x 方法调用。

4、 求近似值。要求如下:

1) 在 Exp01_ x 类中添加一个方法 approximate_x,功能是求 e=1+1/1!+1/2!+1/3!+…+1/n! 的近似值,当 1/n! 小于万分之一时停止计算。

2) 本方法由 Exp01_ x 类的 menu_x 方法调用。

5、 公式计算。要求如下:

1) 在 Exp01_ x 类中分别添加方法 formulaIf_x 和 formulaSwitch_x,分别用 if 和 switch 语句实现给定一个 t 值,计算并输出 y 的值,公式如下:

𝑦 = {

𝑡 2 − 1    0 ≤ 𝑡 < 1

𝑡 3 − 2 ⋅ 𝑡 − 2     1 ≤ 𝑡 < 3

𝑡 2 − 𝑡 ⋅ 𝑠𝑖𝑛𝑡     3 ≤ 𝑡 < 5

𝑡 + 1     5 ≤ 𝑡 < 7

𝑡 − 1     其他

}

2) 两个方法均由 Exp01_ x 类的 menu_x 方法调用

源代码

Exp01_x.java

import java.util.Scanner;
public class Exp01_x {
    // 实验题目1:面积和周长
    public void areaPerimeter_x() {
        Scanner scanner=new Scanner(System.in);
        int x, y;
        while (true) {
            System.out.println("实验题目1:面积和周长");
            System.out.println("请输入两个数(范围要求:大于0且小于等于30):");
                x = scanner.nextInt();
                y = scanner.nextInt();
                if (x > 0 && x <= 30 && y > 0 && y <= 30) {
                    // 计算矩形的面积和周长
                    System.out.println("输入数据都大于0且小于等于30,计算矩形面积");
                    System.out.println("矩形的面积:" + (x * y));
                    System.out.println("矩形的周长:" + (2 * (x + y)));
                    break;
                } else if (x > 0 && x <= 30 || y > 0 && y <= 30) {
                    // 计算圆的面积和周长
                    double radius = (x > y) ? x : y;
                    System.out.println("输入数据只有一个大于0且小于等于30,计算圆的面积");
                    System.out.println("圆的面积:" + (Math.PI * radius * radius));
                    System.out.println("圆的周长:" + (2 * Math.PI * radius));
                    break;
                } else {
                    System.out.println("输入的数据无效,请确保至少有一个数大于0且小于等于30。");
                }
        }
    }
    // 实验题目2:成绩和等级
    public void grade_x() {
        System.out.println("实验题目2:成绩和等级");
        double javaScore, databaseScore, englishScore;
        String javaGrade, databaseGrade, englishGrade;
        double averageScore;
        Scanner scanner=new Scanner(System.in);
            System.out.println("请输入学生的Java成绩:");
                javaScore = scanner.nextDouble();
            System.out.println("请输入学生的数据库成绩:");
                databaseScore = scanner.nextDouble();
            System.out.println("请输入学生的英语成绩:");
                englishScore =scanner.nextDouble();
        // 计算Java成绩等级
        if (javaScore >= 90) {
            javaGrade = "优";
        } else if (javaScore >= 80) {
            javaGrade = "良";
        } else if (javaScore >= 70) {
            javaGrade = "中";
        } else if (javaScore >= 60) {
            javaGrade = "及格";
        } else {
            javaGrade = "不及格";
        }
        // 计算数据库成绩等级
        if (databaseScore >= 90) {
            databaseGrade = "优";
        } else if (databaseScore >= 80) {
            databaseGrade = "良";
        } else if (databaseScore >= 70) {
            databaseGrade = "中";
        } else if (databaseScore >= 60) {
            databaseGrade = "及格";
        } else {
            databaseGrade = "不及格";
        }
        // 计算英语成绩等级
        if (englishScore >= 90) {
            englishGrade = "优";
        } else if (englishScore >= 80) {
            englishGrade = "良";
        } else if (englishScore >= 70) {
            englishGrade = "中";
        } else if (englishScore >= 60) {
            englishGrade = "及格";
        } else {
            englishGrade = "不及格";
        }
        // 计算平均成绩
        averageScore = (javaScore + databaseScore + englishScore) / 3;
        // 打印成绩和等级
        System.out.println("Java成绩:" + javaScore + "分,等级:" + javaGrade);
        System.out.println("数据库成绩:" + databaseScore + "分,等级:" + databaseGrade);
        System.out.println("英语成绩:" + englishScore + "分,等级:" + englishGrade);
        System.out.println("平均成绩:" + averageScore + "分");
    }
    // 实验题目3:求近似值
    public void approximate_x() {
        System.out.println("实验题目4:求近似值");
        double e = 1; // e的初始值为1
        int n = 1; // 初始化n为1
        double term; // 用来存储每一项的值
        while (true) {
            term = 1.0 / factorial(n); // 计算第n项的值
            e += term; // 将第n项加到e上
            n++; // n自增
            if (term < 0.0001) { // 当1/n!小于0.0001时停止计算
                break;
            }
        }
        System.out.println("e的近似值为:" + e);
    }
    // 计算n的阶乘
    public double factorial(int n) {
        if (n == 0) {
            return 1; // 0的阶乘定义为1
        } else {
            return n * factorial(n - 1); // 递归计算阶乘
        }
    }
    // 实验题目5:公式计算
    // 使用if语句计算y的值
    public static void formulaIf_x(double t) {
        double y;
        if (t >= 0 && t < 1) {
            y = t * t - 1;
        } else if (t >= 1 && t < 3) {
            y = t * t * t - 2 * t - 2;
        } else if (t >= 3 && t < 5) {
            y = t * t - t * Math.sin(Math.PI * t / 180);
        } else if (t >= 5 && t < 7) {
            y = t + 1;
        } else {
            y = t - 1;
        }
        System.out.println("使用if语句计算出的y值:" + y);
    }
    // 使用switch语句计算y的值
    public static void formulaSwitch_x(double t) {
        double y;
        int caseValue = (int) t;
        switch (caseValue) {
            case 0:
            case 1: y = t * t - 1; break;
            case 2:
            case 3: y = t * t * t - 2 * t - 2; break;
            case 4:
            case 5: y = t * t - t * Math.sin(Math.PI * t / 180); break;
            case 6: y = t + 1; break;
            default: y = t - 1; break;
        }
        System.out.println("使用switch语句计算出的y值:" + y);
    }
// 显示菜单并调用实验题目的方法
    public void menu_x() {
        int choice;
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请选择实验题目:");
            System.out.println("0.结束");
            System.out.println("1.面积和周长");
            System.out.println("2.成绩和等级");
            System.out.println("3.求近似值");
            System.out.println("4.公式计算(使用if语句)");
            System.out.println("5.公式计算(使用switch语句)");
            System.out.print("请输入你的选择:");
                choice = scanner.nextInt();
                switch (choice) {
                    case 0:
                        System.out.println("程序已退出");
                        System.exit(0);
                        break;
                    case 1:
                        areaPerimeter_x();
                        break;
                    case 2:
                        grade_x();
                        break;
                    case 3:
                        approximate_x();
                        break;
                    case 4:
                        System.out.println("请输入t的值:");
                        double t1=scanner.nextDouble();
                        formulaIf_x(t1);
                        break;
                    case 5:
                        System.out.println("请输入t的值:");
                        double t2=scanner.nextDouble();
                        formulaSwitch_x(t2);
                        break;
                    default:
                        System.out.println("输入的数据无效,请重新输入");
                        break;
                }
        }
    }

}

Main.java

public class Main {
    public static void main(String[] args) {
        Exp01_x exp01 = new Exp01_x();
        exp01.menu_x(); // 调用菜单方法
    }
}

运行结果

​​​​​​​

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值