问题思考及作业
编程思维:分解
分解是为了使复杂工程简单化,方便日后的检查修改等操作,分解后也使分工更明确,提升多人团队的开发效率
我认为没有必要再分解,每段程序的功能都已经足够简单且清晰
1、JAVA的基本运行单位是类还是方法? 类
2、类由什么组成? 变量与方法
3、变量的类型,相互之间可以转换吗,浮点数? 基本数据类型分为自动转换(小到大)和强制类型转换(大到小),浮点数也一样
4、String是一个数据类型吗? 是引用数据类型
5、static代表的含义? 修饰的成员属于类本身,而非类的实例对象,可直接通过 “类名。成员” 访问
被private修饰的枚举类仅能在当前类内部访问。由于main方法与枚举类在同一个类中,所以可以正常访问和使用这个私有枚举。
Java中的数采用补码表示,采用浮点数运算时,因为部分数无法用有限长度的二进制表达,会出现误差。
在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)
double的二进制近似值会被BigDecimal直接 "继承"
import java.util.Random;
class ArithmeticGenerator {
public static void main(String[] args) {
// 创建随机数生成器
Random random = new Random();
// 生成30道题目
for (int i = 0; i < 30; i++) {
// 生成两个1-10之间的随机整数
int num1 = random.nextInt(10) + 1;
int num2 = random.nextInt(10) + 1;
// 随机选择运算类型:0-加,1-减,2-乘,3-除
int operator = random.nextInt(4);
// 根据运算类型生成题目,确保结果有效
String question = generateQuestion(num1, num2, operator);
// 输出题目,带题号
System.out.printf("%d. %s%n", i + 1, question);
}
}
/**
* 生成一道四则运算题目
* @param num1 第一个数字
* @param num2 第二个数字
* @param operator 运算类型:0-加,1-减,2-乘,3-除
* @return 题目字符串
*/
private static String generateQuestion(int num1, int num2, int operator) {
switch (operator) {
case 0: // 加法
return num1 + " + " + num2 + " = ?";
case 1: // 减法,确保结果非负
// 如果num1 < num2,交换两个数
if (num1 < num2) {
int temp = num1;
num1 = num2;
num2 = temp;
}
return num1 + " - " + num2 + " = ?";
case 2: // 乘法
return num1 + " × " + num2 + " = ?";
case 3: // 除法,确保能整除
// 确保除数不为0且能整除
num2 = getDivisor(num1);
return num1 + " ÷ " + num2 + " = ?";
default:
return "";
}
}
/**
* 为指定数字获取一个合适的除数,确保能整除且不为0
* @param num 被除数
* @return 合适的除数
*/
private static int getDivisor(int num) {
if (num == 1) {
return 1;
}
Random random = new Random();
// 最多尝试10次寻找合适的除数
for (int i = 0; i < 10; i++) {
int divisor = random.nextInt(num) + 1;
if (num % divisor == 0) {
return divisor;
}
}
// 如果没找到,返回1(任何数都能被1整除)
return 1;
}
}
import java.util.Random;
public class RandomStr {
public static void main(String[] args) {
// 生成6位随机验证字符串
String verificationCode = generateVerificationCode();
System.out.println("生成的6位验证字符串: " + verificationCode);
}
/**
* 生成6位随机验证字符串
* 包含大写字母、小写字母和数字
* @return 6位随机字符串
*/
public static String generateVerificationCode() {
Random random = new Random();
StringBuilder sb = new StringBuilder();
// 字符范围:0-9, A-Z, a-z
// 数字: 48-57, 大写字母: 65-90, 小写字母: 97-122
for (int i = 0; i < 6; i++) {
// 随机选择字符类型:0-数字,1-大写字母,2-小写字母
int type = random.nextInt(3);
int charCode;
switch (type) {
case 0:
// 生成数字:48-57
charCode = random.nextInt(10) + 48;
break;
case 1:
// 生成大写字母:65-90
charCode = random.nextInt(26) + 65;
break;
default:
// 生成小写字母:97-122
charCode = random.nextInt(26) + 97;
break;
}
// 将ASCII码转换为字符并添加到结果中
sb.append((char) charCode);
}
return sb.toString();
}
}
浙公网安备 33010602011771号