当前位置: 首页 > news >正文

第一次课动手动脑合集

1.EnumTest.java
EnumTest.java中定义了枚举Size,该枚举包含SMALL、MEDIUM、LARGE三个常量。其运行结果体现了枚举的多项核心特性:
当用引用比较枚举变量s(Size.SMALL)与t(Size.LARGE)时,结果为false,这是因为二者是不同的枚举常量;调用s.getClass().isPrimitive()返回false,表明枚举属于引用类型,而非基本数据类型;s与通过Size.valueOf("SMALL")获取的枚举变量u进行引用比较时,结果为true,这说明同一名称的枚举常量是单例对象,即仅存在一个实例;通过Size.values()方法可获取包含所有枚举常量的数组,对该数组进行循环遍历,会依次输出SMALL、MEDIUM、LARGE。
这些结果清晰展现了枚举的特性:具有单例性,即每个常量仅存在一个实例;本质是引用类型,不属于原始数据类型;提供了便捷的工具方法,其中valueOf用于按名称获取对应常量,values用于获取所有常量以便遍历。此外,枚举的每个具体值都引用一个特定的对象,相同的值则引用同一个对象,因此对于枚举类型的变量,使用==和equals()方法进行比对时,结果是等价的。
image

2.image
代码的输出结果为:第一行是X+Y=100200,第二行是300=X+Y。这是因为Java中字符串与其他类型的“+”操作遵循从左到右的运算顺序:对于"X+Y="+X+Y,最左侧以字符串"X+Y="开头,后续的“+”会将X(int型100)、Y(int型200)依次转为字符串进行拼接,最终得到"X+Y=100200";而对于X+Y+"=X+Y",最左侧是X+Y的数值运算(先计算出100+200=300),之后再将结果与字符串"=X+Y"进行拼接,因此得到"300=X+Y"。

3.随机生成四则运算题目
import java.util.Scanner;
import java.util.Random;
import java.util.InputMismatchException;
public class ArithmeticPractice {
// 定义运算符
private static final char[] OPERATORS = {'+', '-', '', '/'};
private Scanner scanner;
private Random random;
private int totalQuestions;
private int correctAnswers;
public ArithmeticPractice(int totalQuestions) {
this.scanner = new Scanner(System.in);
this.random = new Random();
this.totalQuestions = totalQuestions;
this.correctAnswers = 0;
}
// 生成随机数字(1-100之间)
private int generateNumber() {
return random.nextInt(100) + 1;
}
// 生成随机运算符
private char generateOperator() {
return OPERATORS[random.nextInt(OPERATORS.length)];
}
// 计算结果
private int calculate(int num1, int num2, char operator) {
switch (operator) {
case '+':
return num1 + num2;
case '-':
// 确保结果不为负数
return num1 > num2 ? num1 - num2 : num2 - num1;
case '
':
return num1 * num2;
case '/':
// 确保可以整除且除数不为0
if (num2 == 0) return 0;
// 调整数字使除法可以整除
return (num1 * num2) / num2;
default:
return 0;
}
}
// 运行练习
public void startPractice() {
System.out.println("欢迎参加四则运算练习!");
System.out.println("共" + totalQuestions + "道题,请输入答案(整数):\n");
for (int i = 0; i < totalQuestions; i++) {
int num1 = generateNumber();
int num2 = generateNumber();
char operator = generateOperator();
// 对于减法,确保被减数大于减数
if (operator == '-') {
if (num1 < num2) {
int temp = num1;
num1 = num2;
num2 = temp;
}
}
// 对于除法,确保可以整除
else if (operator == '/') {
// 避免除数为0,并且确保可以整除
num2 = num2 == 0 ? 1 : num2;
num1 = num1 * num2; // 确保可以整除
}
int correctResult = calculate(num1, num2, operator);
// 显示题目
System.out.printf("第%d题:%d %c %d = ? ", (i + 1), num1, operator, num2);
// 获取用户答案
int userAnswer = 0;
boolean validInput = false;
while (!validInput) {
try {
userAnswer = scanner.nextInt();
validInput = true;
} catch (InputMismatchException e) {
System.out.print("输入错误,请输入一个整数:");
scanner.next(); // 清除错误输入
}
}
// 判断答案是否正确
if (userAnswer == correctResult) {
System.out.println("正确!");
correctAnswers++;
} else {
System.out.println("错误,正确答案是:" + correctResult);
}
System.out.println();
}
// 显示结果
showResult();
scanner.close();
}
// 显示练习结果
private void showResult() {
System.out.println("练习结束!");
System.out.println("总题数:" + totalQuestions);
System.out.println("做对:" + correctAnswers + "题");
System.out.println("做错:" + (totalQuestions - correctAnswers) + "题");
System.out.printf("正确率:%.2f%%\n", (correctAnswers * 100.0) / totalQuestions);
}
public static void main(String[] args) {
// 生成30道题
ArithmeticPractice practice = new ArithmeticPractice(30);
practice.startPractice();
}
}

http://www.jsqmd.com/news/5071/

相关文章:

  • JSON dump in Ruby
  • 详细介绍:python+django/flask+uniapp基于微信小程序的瑜伽体验课预约系统
  • smartctl on FreeBSD: Please specify device type with the -d option.
  • GraphRAG对自然语言处理中深层语义分析的革命性影响与未来启示 - 教程
  • prefect
  • 生成算数问题*30
  • 6379:统计学生信息(使用动态链表完成)
  • 详细介绍:云原生 vs 传统部署
  • 使用IOT-Tree Server通过FINS协议连接欧姆龙CP2E-N系列PLC - 详解
  • 实用指南:疑难bug之正确处理InterruptedException
  • 课后作业1-3
  • GNSS精度判断和协方差矩阵 - MKT
  • 实用指南:clsx:高效处理 React 条件类名的实用工具
  • Insightly模板页面存储型XSS漏洞分析与复现
  • 记录 | 关于陪伴型交互AI的一些探讨
  • luogu P1719 最大加权矩形
  • CF2065D Skibidus and Sigma
  • 微信二次开发个人号api
  • 深入解析:神经网络二分类任务详解:前向传播与反向传播的数学计算
  • 课后作业2(动手动脑,课后实验性问题)
  • 从零开始构建图注意力网络:GAT算法原理与数值实现详解
  • 分解原则编写
  • 关于Leetcode 812题的简单思考
  • Laravel5.8 利用 snappyPDF 生成PDF文件
  • 数据结构——链表 - 详解
  • 25秋周总结4
  • Python 潮流周刊#121:工程师如何做出高效决策?
  • 饥荒联机版
  • LinuxC++项目开发日志——基于正倒排索引的boost搜索引擎(5——通过cpp-httplib库建立网页模块) - 详解
  • iSCSI网络存储——基于VM17下麒麟V10SP1与SP2的共享配置