目录
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[]。
其中:
- 总选课人次是静态变量;
- 课程编号、课程名、学分为常量(final 修饰);
- 每门课最多选课人数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)
成员方法:
- Display(){可以输出当前课程名、课程编号,学分,已选课人数} //状态显示方法
- CGInquiry(){直接返回CG的值} //查询总选课人次方法,静态方法
- CStuIDis(){尝试用for(String stu: CStuID)} // 输出所有选课学生ID方法,
- 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 并一直重复操作直到所有的元素都被运行
// 按顺次遍历所有元素