(2022级)成都工业学院Java程序设计(JAVA)实验一:编写一个简单的Java程序

news2024/12/27 12:37:49

 写在前面

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(); // 调用菜单方法
    }
}

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1512489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法面试题】-07

小明找位置 题目描述 小朋友出操&#xff0c;按学号从小到大排成一列;小明来迟了&#xff0c;请你给小明出个主意&#xff0c;让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n);学号为整数类型&#xff0c;队列规模<10000; 输入描述 1、第一行:输入已排成队列的…

金融知识分享系列之:财不入急门——迫切盈利的欲望是痛苦的根源

金融知识分享系列之&#xff1a;财不入急门——迫切盈利的欲望是痛苦的根源 一、错误观点二、正确观点 一、错误观点 迫切盈利&#xff1a; 总是怕错过机会&#xff0c;着急入场自己认为很好的机会&#xff0c;就想重仓押注&#xff0c;挽回损失想学习一套规则&#xff0c;立…

PCB差分通孔的数值建模方法

目录 0 引言 1 基于CST的3D通孔模型 2 通孔模型的近似等效计算 3 利用ADS进行电路仿真分析 4 总结 0 引言 当数据速率超过10Gbps时&#xff0c;PCB上的通孔所带来的寄生参数会成为影响数据误码率的关键因素之一&#xff0c;虽然通过三维电磁场求解器提取过孔的行为模型&…

京津冀协同发展:北京·光子1号金融算力中心——智能科技新高地

京津冀协同发展是党中央在新的历史条件下提出的一项重大国家战略&#xff0c;对于全面推进“五位一体”总体布局&#xff0c;以中国式现代化全面推进强国建设、民族复兴伟业&#xff0c;具有重大现实意义和深远历史意义。随着京津冀协同发展战略的深入推进&#xff0c;区域一体…

高项-项目整合管理

今天找到一个讲的还不错的视频&#xff0c;放上来存一下&#xff1a;【第4版】第8章-项目整合管理(8.1)_哔哩哔哩_bilibili 项目整合管理的目标 资源分配平衡竞争性需求研究各种备选方法裁剪过程以实现项目目标管理各个项目管理知识域之间的依赖关系 项目整合管理的过程 制…

系统设计学习(二)用户认证场景

一、常用鉴权方式 HTTP Basic Authentication (HTTP基本认证) session-cookie 1&#xff0c;服务器在接受客户端首次访问时在服务器端创建session&#xff0c;然后保存session(我们可以将session保存在内存中&#xff0c;也可以保存在redis中&#xff0c;推荐使用后者)&…

【Docker】 ubuntu18.04编译时内存不足需要使用临时交换分区解决“c++: internal compiler error“错误

【Docker】 ubuntu18.04编译时内存不足需要使用临时交换分区解决"c: internal compiler error"错误 问题描述 安装独立功能包时编译不成功&#xff0c;出现 “c: internal compiler error: Killed(program cciplus)” 错误。 解决方案 出现这个问题的原因大概率是…

[LeetCode][LCR174] 寻找二叉搜索树中的目标节点

题目 LCR 174. 寻找二叉搜索树中的目标节点 某公司组织架构以二叉搜索树形式记录&#xff0c;节点值为处于该职位的员工编号。请返回第 cnt 大的员工编号。 示例 1: 输入&#xff1a;root [7, 3, 9, 1, 5], cnt 27/ \3 9/ \ 1 5 输出&#xff1a;7示例 2: 输入: ro…

【Redis】-Redis实现高并发下秒杀系统

文章目录 前言 一、场景二、商品超卖的场景三、使用分布式锁解决超卖四、使用Redis事务乐观锁解决超卖 ** 前言 Redis事务   Redis事务是一种将多个命令打包执行的机制&#xff0c;确保这些命令要么全部执行成功&#xff0c;要么全部执行失败。Redis事务通过MULTI、EXEC、D…

机器视觉检测设备的组成要素

机器视觉检测设备是一种先进的自动化检测技术工具&#xff0c;它利用光学、图像处理和计算机硬件及软件技术模拟并扩展人类的视觉功能&#xff0c;以实现对产品或目标物体进行自动化的尺寸测量、缺陷检测、表面质量评估、颜色识别、形状匹配以及位置判断等功能。这种设备通常包…

【Rockchip android7.1 平台rtl8821cs wifi移植调试】

Rockchip 平台rtl8821cs wifi移植调试 问题描述解决方法 郑重声明:本人原创博文&#xff0c;都是实战&#xff0c;均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Rockchip rk3128 OS:Android 7.1.2 Kernel: 3.10 问题描述 客户需要在现在的板子上调一款RTL882…

【惠友精术】你见过给膝关节“打补丁”吗?单髁置换术,微创保膝真有一套

有什么方法可以让“换膝盖”既没那么痛&#xff0c;苦头又吃得少呢&#xff1f;你别说&#xff0c;还真有&#xff01; 近日&#xff0c;关节外科团队顺利为一例膝关节退变的患者完成了“膝关节单髁置换术”&#xff0c;实施了微小切口下对膝关节病变部位的精准治疗。该手术的成…

SV-7045网络草坪音箱安装说明 景区园区背景音乐广播石头音箱

SV-7045网络草坪音箱安装说明 景区园区背景音乐广播石头音箱 在做室外公共广播/背景音乐系统时&#xff0c;对于草坪音箱的安装方法,大家可能不甚了解&#xff0c;所以将具体安装方法作简要说明。 音箱安装步骤如下&#xff1a; 1.测量草地音箱的底座尺寸大小&#xff0c;最…

07-java基础-锁之AQSReentrantLockBlockingQueueCountDownLatchSemapho

文章目录 0&#xff1a;AQS简介-常见面试题AQS具备特性state表示资源的可用状态AQS定义两种资源共享方式AQS定义两种队列自定义同步器实现时主要实现以下几种方法&#xff1a;同步等待队列条件等待队列 1&#xff1a;AQS应用之ReentrantLockReentrantLock如何实现synchronized不…

【数据结构C++】线性表/顺序表-数组与vector

系列文章目录 第一章 线性表/顺序表-数组与vector 文章目录 系列文章目录前言一、数据结构主要研究的内容&#xff1f;二、数据结构三要素三、数组1.C中数组基本语法1.1 数组的声明、初始化1.2 vector的底层结构 2.数据结构之数组详解2.1 数据结构之数组操作——增、删、改、查…

55寸oled曲面拼接屏的特性

55寸OLED曲面拼接屏具有一系列引人注目的特性&#xff0c;使其在高端展示、商业广告、会议室和舞台演出等场合具有广泛的应用价值。以下是关于55寸OLED曲面拼接屏特性的详细解析&#xff1a; 高亮度与高对比度&#xff1a;OLED技术使得屏幕能够在各种光线条件下呈现出明亮且清晰…

【构建部署_Docker介绍与安装】

构建部署_Docker介绍与安装 构建部署_Docker介绍与安装Docker介绍Docker安装CentOS安装DockerCompose 构建部署_Docker介绍与安装 Docker介绍 Docker 是一个基于go语言开发的开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#x…

算法---滑动窗口练习-2(无重复字符的最长子串)

无重复字符的最长子串 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;无重复字符的最长子串 2. 讲解算法原理 首先定义了变量 left、right 和 len&#xff0c;分别表示当前无重复子串的左边界、右边界和最大长度。 获取输入字符串 s 的长度 n。 定…

nginx有几种启动方式

Nginx 通常可以以两种主要的方式启动&#xff1a;作为前台进程运行或作为守护进程&#xff08;后台&#xff09;运行。 前台运行&#xff1a; 当Nginx以前台模式运行时&#xff0c;它会在命令行保持活动状态&#xff0c;所有的日志输出都会直接显示在命令行上。这种模式通常用于…

2022-6 青少年软件编程(图形化) 等级考试试卷(一级)

第1题:【 单选题】 广场中有声控喷泉, 当声音的音量大于 60 的时候, 喷泉就会喷出水, 现在的音量为30,下列哪个选项可以让喷泉喷出水? ( ) A: B: C: D: 【正确答案】: B 【试题解析】 : 当前声音的音量为 30, 需要将声音增加到 60 以上就可以让喷泉喷出水, …