我的JAVA学习(2)——描述自己调试曾经遇到异常的过程_描述自己如何调试曾经遇到过异常的过程。_小夏沫丶的博客-程序员宅基地

技术标签: java  debug  

学习过程中调试遇到的异常

解决曾经在写冒泡算法时遇到的数组越界异常
java.lang.ArrayIndexOutOfBoundsException

import java.util.Arrays;
 
public class BubbleSort {
    
    public static void main(String[] args) {
    
        int[] num = {
    3, 23, 84, 12 ,24 ,52, 15, 90, 27};
        bubbleSort(num);
        System.out.println(Arrays.toString(num));
    }
 
    public static void bubbleSort(int[] nums){
    
        int temp;
        for (int i = 0;i<nums.length-1;i++){
    //外层循环;n个元素排序,则最多需要n-1次循环
            boolean flag = true;//排序标记;true表示有序、false表示无序
            for (int j = 0;j<nums.length-i;j++){
    //内层循环:数列从前往后每两个数据依次比较、排序
                if(nums[j]>nums[j+1]){
    
                    temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                    flag = false;
                }
            }
 
            if (flag) {
    //判断数组是否有序,如有序则退出循环,排序完成
                break;
            }
        }
    }
}

运行后程序遇到异常:
在这里插入图片描述
异常描述:数组越界异常,由描述可得,异常出现在第17行

将断点设置在第十七行进行Debug调试:
在这里插入图片描述
可以看出,数组的长度为9,下标最大为8,当j=8时,j+1=9导致数组越界,因此需要将条件j<nums.length-i改为j<nums.length-1-i

修改后的代码运行结果:
在这里插入图片描述
心得总结:
学会了调试功能,在遇到异常时,可以现根据异常的关键信息判断代码所在行,然后根据百度等网上搜索异常相关情况,再利用Debug功能调试,一步一步查找异常的原因,修改代码。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_47966537/article/details/113926168

智能推荐

自定义mybatis拦截器拦截sql_spring_cainiao的博客-程序员宅基地

配置文件装载拦截器拦截器代码:import com.alibaba.fastjson.JSONObject;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.apache.ibatis.executor.Executor;import org.apache.ibatis.mapping.BoundSql;import org.apache.ibatis.map

MCollective架构篇4-MCollective各种插件的部署及测试_weixin_34007291的博客-程序员宅基地

零基础学习Puppet自动化配置管理系列文档MCollective只是一个框架,如果需要在上面发挥各种作用,那就需要各种插件的支持。官方提供了很多这方面的插件,除此之外,还有第三方的插件,比如shell插件等,下面会介绍各种插件的安装,以及插件之间如何组合进行使用。1、在mcollective client端和server端安装各种官网plugins首先去官网下载各个插件 http://yum.p...

php获取复选框的值CheckBox的多个值_JPCstorm的博客-程序员宅基地

1html代码 Title 用户名: 密 码: 性别:男 女 爱 好:游泳 骑车 爬山 购物 你喜欢的城市: 成都 北京

python自动化常用模块_Coderain_的博客-程序员宅基地

python自动化常用函数导入time模块import time导入ActionChains模块(鼠标)from selenium.webdriver.common.action_chains import ActionChains导入Keys模块(键盘)from selenium.webdriver.common.keys import Keys导入Select模块(下拉框)from selenium.webdriver.support.select import Select

[案例2-4]为新员工分配部门_将某公司新招聘的程序员按工号分配到5个部门_小陈努力学JAVA的博客-程序员宅基地

1.任务描述某公司现有java程序开发部门、C#程序开发部门、asp.net程序测试部门、前端程序开发部门四个部门。编写一个程序实现新入职的员工的部门分配,要求根据用户输入的员工姓名和应聘语言确定员工应该分配到哪个部门。若公司没有与输入的语言匹配的部门,则进行相关提示。运行结果:代码如下:import java.util.Scanner;/** * 2022/1/28 */public class anli4 { public static void main(Str

Android 夜间模式(白/夜间模式的切换)_拉莫帅的博客-程序员宅基地

在项目研发中,我们避免不了需求中会应用到夜间模式,这里对它做一些总结以及封装从API 23后,Android就有自带的api能够实现夜间模式与白天模式的切换。Support Library 23.2(应用于API14+)推出了适合Android Apps的DayNight主题。废话不多说,看效果:最后给大家把主要的部分拿出来,供大家参考,结尾有项目下载地址1. 导入依赖implementation 'androidx.appcompat:appcompat:1.0.2'2.修改...

随便推点

【机器学习】【ICA-3】ICA独立成分分析的Python实现_python 独立成分分析_CV_ML_DP的博客-程序员宅基地

1.ICA独立成分分析的详解2.ICA独立成分分析的Python实现2.1代码2.2运行结果(end)

Unable to locate package解决Ubuntu14.04执行apt-get install时报错_iqiqiya的博客-程序员宅基地

 解决办法:0x01:换源   然后执行sudo apt-get update             怎样换源可以参考Ubuntu 14.04更新为国内阿里源解决apt-get install无法执行的问题0x02:执行sudo apt-get upgrade...

python绘图_陈壮实的搬砖生活的博客-程序员宅基地

刚学习python,非常好奇那些各种图是怎样绘制的,于是就到处搜索,很多帖子记录不全。但是,看到下面这篇帖子后,我惊呆了,非常全!附上链接,以示感谢。望道友们多多去该贴点赞。添加链接描述...

Cocos studio v3.10记录(一)_那事那人的博客-程序员宅基地

Cocos studio使用起来没有想象的好,还不如直接敲代码.UI布局后,添加事件就懵了。这里是个简单的测试,反正我一直在写测试。很无聊!

如何编写轻量级 CSS 框架_公众号:Java后端的博客-程序员宅基地

作者 |叙帝利链接 |www.cnblogs.com/nzbin/p/7073601.html前言这篇文章我已经酝酿了半年之久,或者说拖沓了这么久吧。想说的东西很多,...

嵌入式知识-ARM裸机-学习笔记(11):I2C总线通信_赵小琛在路上的博客-程序员宅基地

嵌入式知识-ARM裸机-学习笔记(11):I2C总线通信一、I2C总线1. I2C总线简介I2C(Inter-Integrated Circuit)总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是...

推荐文章

热门文章

相关标签