Java重修笔记 第三十八天 String翻转

  • String翻转

1. 要求将字符串指定的部分进行翻转

public class StringHomework {
    public static void main(String[] args) {
        // 要求将字符串指定的部分进行翻转
        // 例如:abcdef ---> a edcb f   1, 4
        System.out.print("转换前: ");
        String s = "abcdef";
        String s1 = null;
        System.out.println(s);
        try {
            System.out.println("=========");
            System.out.print("转换后: ");
            System.out.println(StringHomework.reverse(s, 1, 4));
        } catch (NullPointerException e) {
            System.out.println(e.getMessage() + "传入的字符串为null!");
        }

    }

    public static String reverse(String str, int start, int end) throws NullPointerException{
        // 先将字符串转换为字符数组
        char[] chars = str.toCharArray();

        // 判断 str 是否合法
        if (str.isEmpty()) {
            throw new RuntimeException("传入的字符串数据不合法!");
        }

        // 判断 start 和 end 是否合法
        if (start < 0 || end > chars.length || start > end) {
            throw new RuntimeException("传入的起始位置数据不合法!");
        }

        // 进行数组翻转, 提取出要反转的部分
        char[] chars1 = new char[end - start + 1];
        System.arraycopy(chars, start, chars1, 0, chars1.length);
        // return new String(chars1);
        // 翻转 chars1 字符数组
        for (int i = 0; i < chars1.length / 2; i++) {
            char temp = chars1[i];
            chars1[i] = chars1[chars1.length - i - 1];
            chars1[chars1.length - i - 1] = temp;
        }
        // return new String(chars1);
        // 将原数组数据替换
        System.arraycopy(chars1, 0, chars, start, chars1.length);
        return new String(chars);
    }
}

运行结果:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以给您提供一些思路和参考。 首先,创建视图需要重修的名单,需要根据具体的数据表和业务需求进行设计,以下是一种可能的设计思路: 1. 首先,需要有一个数据表或者视图,记录所有需要重修的学生信息,包括学生姓名、学号、课程名称、课程成绩、是否需要重修等信息。 2. 基于这个数据表,可以使用 SQL 语句创建一个视图,统计所有需要重修的学生信息,例如: ```sql CREATE VIEW view_re_exam AS SELECT student_name, student_id, course_name, course_score FROM student_score WHERE re_exam = 'Y'; ``` 这个视图会返回所有需要重修的学生信息,包括学生姓名、学号、课程名称和课程成绩。 3. 根据具体的业务需求,可以在这个视图上进一步进行统计和分析,例如: - 统计每个学生需要重修的科目数目,并按照从多到少的顺序排序: ```sql SELECT student_name, COUNT(*) AS re_exam_count FROM view_re_exam GROUP BY student_name ORDER BY re_exam_count DESC; ``` - 统计每个科目需要重修的学生数目,并按照从多到少的顺序排序: ```sql SELECT course_name, COUNT(*) AS re_exam_count FROM view_re_exam GROUP BY course_name ORDER BY re_exam_count DESC; ``` - 统计每个年级需要重修的学生数目,并按照从多到少的顺序排序: ```sql SELECT SUBSTR(student_id, 1, 2) AS grade, COUNT(*) AS re_exam_count FROM view_re_exam GROUP BY grade ORDER BY re_exam_count DESC; ``` 以上是一些基本的设计思路和 SQL 示例,具体实现需要根据您的具体业务需求和数据结构进行调整和优化。希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值