本文章所有代码使用类名为blog,使用环境为JDK17,使用程序为IntelliJ IDEA 2023.3.5版本

一、实验目的

1. 了解 Java 的数据类型
2. 掌握各种变量的声明方式。
3. 理解运算符的优先级。
4. 掌握 Java 基本数据类型、运算符与表达式。
5. 理解 Java 程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。
6. 通过以上内容,掌握 Java 语言的编程规则。


二、实验内容

(1) 使用逻辑运算符编写程序,输出 1 到 1000 之间,找出所有能 3 整除又可以被7 整除的数。



代码示例

public class blog {
    public static void main(String[] args) {
        // Loop through numbers from 1 to 1000
        for (int i = 1; i <= 1000; i++) {
            // Check if the number is divisible by both 3 and 7
            if (i % 3 == 0 && i % 7 == 0) {
                System.out.println(i);
            }
        }
    }
}

这段程序中,i % 3 == 0 && i % 7 == 0 这个条件会检查变量 i 是否同时能被3和7整除。如果能够整除,则会打印出这个数。程序会遍历从1到1000的每一个数,检查每个数是否满足条件。如果满足,就会输出这个数。


(2)分别使用 if 语句和 switch 语句编写程序,功能如下:/**

功能:输入百分制考试成绩,打印出相应的等级。设 A 为 90 分以上、B 为80 分以上、C
为 70 分以上、D 为 60 分以上、E 为 59 分以下。分别使用if语句和switch语句实现,使用switch语句,建议使用default语句。

注:Scanner scanner = new Scanner(System.in);
System.out.println("Please input a score");
float score = Float.parseFloat(scanner.nextLine());


代码示例(if)

// 使用if实现
import java.util.Scanner;

public class blog {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入分数:");
        float score = Float.parseFloat(scanner.nextLine());

        if (score > 100 || score < 0) {
            System.out.println("输入错误,请重新输入!");
        }else if (score >= 90 && score <= 100) {
            System.out.println("A");
        } else if (score >= 80 ) {
            System.out.println("B");
        } else if (score >= 70) {
            System.out.println("C");
        } else if (score >= 60) {
            System.out.println("D");
        } else if (score < 60) {
            System.out.println("E");
        } else {
            System.out.println("输入错误,请重新输入!");
        }
    }
}



代码示例(Switch)

import java.util.Scanner;

public class blog {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入分数:");
        float score = Float.parseFloat(scanner.nextLine());

        if (score < 0 || score > 100) { // 输入错误的情况
            System.out.println("输入错误,请重新输入");
            return; // 结束程序
        }

        int scoreCategory = (int) score / 10; // 转换成等级区间
        switch (scoreCategory) {
            case 10:
            case 9:
                System.out.println("A");
                break;
            case 8:
                System.out.println("B");
                break;
            case 7:
                System.out.println("C");
                break;
            case 6:
                System.out.println("D");
                break;
            default:
                System.out.println("E");
                break;
        }
    }
}



(3)使用 for 循环编写程序,输出九九乘法表,功能如下:

* 功能:打印九九乘法表
* 输入如下:
* 1 * 1 = 1
* 2 * 1 = 2 2 * 2 = 4
* 3 * 1 = 3 3 * 2 = 6 3 * 3 = 3
* 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
* 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
* 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
* 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
* 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8*8=64
* 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9*8=64 9*9=81



代码示例

public class blog {
    public static void main(String[] args) {
        // 外层循环控制行数
        for (int i = 1; i <= 9; i++) {
            // 内层循环控制每行显示的列数
            for (int j = 1; j <= i; j++) {
                System.out.print(j + " * " + i + " = " + (j * i) + "\t"); // 使用 \t 使输出对齐
            }
            System.out.println(); // 每完成一行打印后换行
        }
    }
}



这个程序中,我们首先开始外层循环,它遍历从1到9的数字,代表乘法表的每一行。对于每一行,我们再执行一个内层循环,这个循环遍历从1到当前行号(包含)的所有数字,代表乘法表的列。在内层循环中,我们打印当前列数 j 和当前行数 i 的乘积,而且使用 \t(代表一个制表符)来确保列之间有适当的间距,使输出结果更加整齐。每完成一行的打印后,我们使用 System.out.println() 来换行,以便开始打印下一行。


(4)使用 for 循环打印三角形

* 打印三角形-行数由用户控制台输入决定
* 例如:用户输入4
* *
* **
* ***
* ****
* ***
* **
* *



代码示例

import java.util.Scanner;

public class blog {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入三角形行数:");
        int rows = scanner.nextInt();

        // 打印上半部分
        for (int i = 1; i <= rows; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println(); // 完成一行后换行
        }

        // 打印下半部分
        for (int i = rows - 1; i > 0; i--) {
            for (int j = i; j > 0; j--) {
                System.out.print("*");
            }
            System.out.println(); // 完成一行后换行
        }
    }
}



在这个程序中,我们首先从控制台读取用户输入的行数。随后,第一个 for 循环用于打印三角形的上半部分。在这个循环中,对于每一行,我们打印的星号(*)数量等于当前的行数。

完成上半部分的打印后,第二个 for 循环用于打印三角形的下半部分。这个循环从 rows - 1 开始,逐渐递减至1,每行打印的星号数量与当前行数相等。

这样,整个程序就可以根据用户输入的行数来打印一个上下对称的三角形。


(5)使用 while 或 do{…}while 编写程序,完成猜数字游戏,功能如下:

* 类名:GuessNumber * 功能:猜数字游戏
* 1、系统随机给出一个0-1000之间一个随机整数
* 2、用户输入一个数字 系统给出提示--太小 太大 正确, 如果正确,直接结束游戏
* 3、10次都未猜中 结束游戏



参考代码

import java.util.Scanner;
import java.util.Random;
public class blog {
    public static void main(String[] args) {
        // 创建Random对象用于生成随机数
        Random random = new Random();
        // 生成一个0-1000之间的随机整数
        int numberToGuess = random.nextInt(1001);

        // 创建Scanner对象用于获取用户输入
        Scanner scanner = new Scanner(System.in);
        int numberOfTries = 0; // 初始化猜测次数
        int userGuess = -1; // 用户的猜测值初始化为-1

        System.out.println("欢迎来到猜数字游戏!");
        System.out.println("我已经生成了一个0到1000范围内的数字。");

        // 猜测次数少于10次且用户猜测不正确时继续循环
        while (numberOfTries < 10 && userGuess != numberToGuess) {
            System.out.print("输入你的猜想: ");
            userGuess = scanner.nextInt(); // 读取用户输入的猜测值
            numberOfTries++; // 猜测次数加1

            // 提供反馈
            if (userGuess < 0 || userGuess > 1000) {
                System.out.println("请保证你猜想的范围在0到1000内。");
            } else if (userGuess < numberToGuess) {
                System.out.println("太小了,再猜一次吧!");
            } else if (userGuess > numberToGuess) {
                System.out.println("太大了,再猜一次吧!");
            } else {
                System.out.println("恭喜!你猜到了正确的数字!");
            }
        }

        // 如果10次都没猜中,游戏结束,告诉用户正确答案
        if (userGuess != numberToGuess) {
            System.out.println("游戏结束!正确数字是: " + numberToGuess);
        }

        scanner.close(); // 关闭scanner对象
    }
}



(4)编写学生成绩管理系统,系统分管理员、教师和学生三个不同角色登录,登录时需用户身份验证,验证成功后可以选择角色里的功能

1.管理员登录
2.教师登录
3.学生登录
4.退出系统

管理员功能
1.教师管理
2.学生管理
3.课程管理
4.信息维护
5.退出系统

教师功能
1.录入成绩
2.统计成绩
3.查看成绩
4.信息维护
5.退出系统

学生功能
1.查看成绩单
2.信息维护
3.退出系统

编写程序,完成以下功能:
管理员登录时,判断是否为“administrator”,密码“123”;登录成功显示管理员菜单
教师登录时,判断是否是“teacher”,密码“123”,登录成功显示教师菜单
学生登录时,判断是否为自己的姓名,密码为自己的学号;登录成功显示学生菜单(此处以张三 2024040601为例)


代码示例

import java.util.Scanner;

public class blog {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请选择登录角色:");
            System.out.println("1. 管理员登录");
            System.out.println("2. 教师登录");
            System.out.println("3. 学生登录");
            System.out.println("4. 退出系统");
            System.out.print("请输入选项: ");
            int role = scanner.nextInt();
            scanner.nextLine(); // 吃掉换行符

            switch (role) {
                case 1:
                    if (adminLogin(scanner)) {
                        showAdminMenu(scanner);
                    }
                    break;
                case 2:
                    if (teacherLogin(scanner)) {
                        showTeacherMenu(scanner);
                    }
                    break;
                case 3:
                    if (studentLogin(scanner)) {
                        showStudentMenu(scanner);
                    }
                    break;
                case 4:
                    System.out.println("系统退出,感谢使用!");
                    scanner.close();
                    return;
                default:
                    System.out.println("无效的输入,请重新输入!");
            }
        }
    }

    private static boolean adminLogin(Scanner scanner) {
        System.out.print("请输入管理员用户名: ");
        String username = scanner.nextLine();
        System.out.print("请输入密码: ");
        String password = scanner.nextLine();

        if ("administrator".equals(username) && "123".equals(password)) {
            System.out.println("管理员登录成功!");
            return true;
        } else {
            System.out.println("用户名或密码错误!");
            return false;
        }
    }

    private static boolean teacherLogin(Scanner scanner) {
        System.out.print("请输入教师用户名: ");
        String username = scanner.nextLine();
        System.out.print("请输入密码: ");
        String password = scanner.nextLine();

        if ("teacher".equals(username) && "123".equals(password)) {
            System.out.println("教师登录成功!");
            return true;
        } else {
            System.out.println("用户名或密码错误!");
            return false;
        }
    }

    private static boolean studentLogin(Scanner scanner) {
        System.out.print("请输入学生姓名: ");
        String username = scanner.nextLine();
        System.out.print("请输入学号: ");
        String password = scanner.nextLine();

        if ("张三".equals(username) && "2024040601".equals(password)) {
            System.out.println("学生登录成功!");
            return true;
        } else {
            System.out.println("姓名或学号错误!");
            return false;
        }
    }

    private static void showAdminMenu(Scanner scanner) {
        int choice;
        do {
            System.out.println("管理员功能:");
            System.out.println("1. 教师管理");
            System.out.println("2. 学生管理");
            System.out.println("3. 课程管理");
            System.out.println("4. 信息维护");
            System.out.println("5. 退出系统");
            System.out.print("请选择功能: ");
            choice = scanner.nextInt();
            scanner.nextLine(); // 吃掉换行符
            // 此处需要添加对应选项的功能实现
        } while (choice != 5);
    }

    private static void showTeacherMenu(Scanner scanner) {
        int choice;
        do {
            System.out.println("教师功能:");
            System.out.println("1. 录入成绩");
            System.out.println("2. 统计成绩");
            System.out.println("3. 查看成绩");
            System.out.println("4. 信息维护");
            System.out.println("5. 退出系统");
            System.out.print("请选择功能: ");
            choice = scanner.nextInt();
            scanner.nextLine(); // 吃掉换行符
            // 此处需要添加对应选项的功能实现
        } while (choice != 5);
    }

    private static void showStudentMenu(Scanner scanner) {
        int choice;
        do {
            System.out.println("学生功能:");
            System.out.println("1. 查看成绩单");
            System.out.println("2. 信息维护");
            System.out.println("3. 退出系统");
            System.out.print("请选择功能: ");
            choice = scanner.nextInt();
            scanner.nextLine(); // 吃掉换行符
            // 此处需要添加对应选项的功能实现
        } while (choice != 3);
    }
}