Java错误记录


个人错误记录,如果大佬发现我的理解或者表述有错误,烦请指正,不胜感激。欢迎小伙伴的相关分享,向好的方向走一步,就离坏的结果远一步。共勉

语法错误

办法
初期,百度,解决问题,然后记下来,熟能生巧
后期,啃底层源码,明白实现原理

程序一直在等待,无法继续进行

依次输入n个数,不能直接用像if(scan.nextInt() == 25)这样的条件,如果按顺序下来的next int 并不等于25,程序就会一直等待
解决办法:int m;m = scan.nextInt();用m来判断

Scanner读取数据不完整

第一行 输入n(int型),表示下面将输入的n个元素
第二行 n个元素,以空格隔开
分别用int n = scan.nextInt();和String s = scan.nextLine();读取第一行的数和第二行的数
s读取失败,因为nextLine();遇到回车后会停止继续读入,并舍弃换行。应该在n和s之间添加scan.nextLine();吸收掉中间的回车

数组越界

比如for循环中存在if(a[i+1] == a[i]+1),当i到最后一个元素时,if条件就会越界。所以声明数组时,应该在原来的长度加一,然后改变for循环的遍历条件i < a.length-1

new构建数组长度为n的数组a,然后再用a = s.toCharArray();数组a的长度变为字符串s的长度

字符串未改变

使用s.replaceFirst();后应该再赋值给s,因为s只是数组的管理者,并不能改变这个数组

或者改使用StringBuilder

逻辑错误

办法
写代码之前,用思维导图或者其他方式,把程序大致要分成什么部分,分别实现那些功能,特殊情况的处理等,提前想清楚。然后再开始写代码

记录
没有考虑到边界值
陷入死循环

输出错误

格式问题,多了空格少了空格,输出顺序
没有理解题意

小结

OJ的题目,要考虑多样例输入的问题Scanner+while(hasNext)
OJ给的数据都要用到

向好的方向走一步,就离坏的结果远一步
原文地址:https://www.cnblogs.com/PersistLu/p/12608590.html