老师写的程序有bug,如果输入33-35周,程序就会报索引越界错误,因为for循环里面输出的是4个值,而最后一周只有33-35这三个值,我研究了很久根据评论区的兄弟们指导写出了自己的代码,请指教!

来源:7-2 编程挑战解析

W2796003

2021-08-04 23:17

public static void main(String[] args) {
    String[] contentList = new String[35];//创建一个长度为35的数组
    //给数组中的每个元素赋值
    contentList[0] = "【第1周】环境搭建与语法入门";
    contentList[1] = "【第2周】Java语法之循环、数组与方法";
    contentList[2] = "【第3周】面向对象之封装与继承";
    contentList[3] = "【第4周】面向对象之单例模式与多态";
    contentList[4] = "【第5周】常用工具类(上)";
    contentList[5] = "【第6周】常用工具类(下)";
    contentList[6] = "【第7周】常用工具类(下)";
    contentList[7] = "【第8周】前端基础之HTML与CSS";
    contentList[8] = "【第9周】前端基础之JavaScript与综合案例";
    contentList[9] = "【第10周】Java Web基础";
    contentList[10] = "【第11周】Java Web基础";
    contentList[11] = "【第12周】常用功能与过滤器";
    contentList[12] = "【第13周】监听器与项目实战";
    contentList[13] = "【第14周】监听器与项目实战";
    contentList[14] = "【第15周】MySQL基础";
    contentList[15] = "【第16周】MySQL基础";
    contentList[16] = "【第17周】Java数据库开发基础";
    contentList[17] = "【第18周】框架前置知识";
    contentList[18] = "【第19周】MyBatis基础";
    contentList[19] = "【第20周】MyBatis实现OA系统项目实战";
    contentList[20] = "【第21周】MyBatis实现OA系统项目实战";
    contentList[21] = "【第22周】Linux环境搭建与Redis应用";
    contentList[22] = "【第23周】Spring基础";
    contentList[23] = "【第24周】Spring基础";
    contentList[24] = "【第25周】Spring基础";
    contentList[25] = "【第26周】SSM开发社交网站";
    contentList[26] = "【第27周】Spring Boot电商项目实战";
    contentList[27] = "【第28周】Spring Boot电商项目实战";
    contentList[28] = "【第29周】面试";
    contentList[29] = "【第30周】多线程与分布式";
    contentList[30] = "【第31周】多线程与分布式";
    contentList[31] = "【第32周】Spring Cloud基础";
    contentList[32] = "【第33周】Spring Cloud电商实战";
    contentList[33] = "【第34周】Spring Cloud电商实战";
    contentList[34] = "【第35周】Zookeeper+Dubbo应用与面试";
    //提示信息
    System.out.print("您要开始第几周学习啦,直接输入数字吧:");
    int w = new Scanner(System.in).nextInt();
    if(w > 0 && w <= contentList.length) {//控制w的取值范围
        //计算今天是几月(1-月第一周;4-月第四周)
        int month = 0;
        if (w % 4 == 0) {
            month = w / 4;
        } else {
            month = w / 4 + 1;
        }
        //提示信息
        System.out.println("以下是您本月的学习计划,√代表当前学习任务");
        System.out.println("==================================");
        //利用for循环,找到数组中对应这个月的内容输出
        for (int i = (month - 1) * 4; i < month * 4 && i < contentList.length; i++) {
            if (i == (w - 1)) {
                System.out.println("√" + contentList[i]);
            } else {
                System.out.println(contentList[i]);
            }
        }
    }else {//如果输入的w值不在if范围内,则输出:
        System.out.println("当前周没有课程!");
    }

    }
}


写回答 关注

3回答

  • 我是朱先生
    2022-10-17 23:03:00

    最后写了try catch捕获了异常

  • qq_绿叶也有_0
    2021-12-19 18:07:37
    //利用for循环,找到数组中对应这个月的内容输出(考虑*4是否大于数组本身长度)
    for(int i = (mouth -1 ) * 4;i< (mouth * 4<contentList.length ? mouth * 4 : contentList.length);i++) {
        if(i == (num-1))
        {
            System.out.println("√"+contentList[i]);
        }
        else
        {
            System.out.println(contentList[i]);
        }
    }


  • weixin_慕哥8336180
    2021-08-16 16:28:44

    你把当前这个月的信息拉到数组一个长度为4的数组里,第35周就是第9周,多的36周为空就可以了

    http://img.mukewang.com/611a21b90001e7cd07160737.jpg

    W27960...

    受教了,谢谢!

    2021-08-16 17:25:22

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165179 学习 · 17581 问题

查看课程

相似问题