个人错误记录,如果大佬发现我的理解或者表述有错误,烦请指正,不胜感激。欢迎小伙伴的相关分享,向好的方向走一步,就离坏的结果远一步。共勉
语法错误
办法
初期,百度,解决问题,然后记下来,熟能生巧
后期,啃底层源码,明白实现原理
程序一直在等待,无法继续进行
依次输入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给的数据都要用到