问题思考及作业

编程思维:分解
分解是为了使复杂工程简单化,方便日后的检查修改等操作,分解后也使分工更明确,提升多人团队的开发效率
我认为没有必要再分解,每段程序的功能都已经足够简单且清晰

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();
}

}

posted @ 2025-09-27 20:47  Yuuki理  阅读(8)  评论(0)    收藏  举报