黑马程序员技术交流社区
标题:
(石家庄校区) 学习中代码易错分析
[打印本页]
作者:
cyy1737
时间:
2019-5-7 15:02
标题:
(石家庄校区) 学习中代码易错分析
一:递归时的逻辑思路不容易想明白,容易敲代码的时候不给定递归的限制条件,造成递归太深占内存溢出错误
public class
BuSiShentu {
public static void
main(String[] args) {
long
q1 = System.
currentTimeMillis
();
double
[] arr=
new double
[
100
];
arr[
0
]=
1
;
arr[
1
]=
1
;
for
(
int
i =
2
; i < arr.
length
; i++) {
arr
=arr[i-
1
]+arr[i-
2
];
}
System.
out
.println(arr[arr.
length
-
1
]);
long
m1 = System.
currentTimeMillis
();
System.
out
.println(
"for
用时
"
+(m1-q1));
long
q2 = System.
currentTimeMillis
();
double
duishu =
duishu
(
100
);
System.
out
.println(duishu);
long
m2 = System.
currentTimeMillis
();
System.
out
.println(
"
递归用时
:"
+(m2-q2));
}
public static double
duishu(
double
i){
if
(i==
1
||i==
2
){ //条件
return
1
;
}
else
{
return
duishu
(i-
1
)+
duishu
(i-
2
);
}
}
} 二.判断字符串数组中有数字字符就把包含数字的元素删除,五一假期的一道作业题. 错误原因分析: 敲完之后运结果只有一个元素,后分析有可能是第二层循环多次删除第一层循环中的元素.后载第二层循环判断中加入 break完美解决.
import
java.util.ArrayList;
//String arr[]={“0af3s2sf”,”s6ds1”,”jjww”,”lailai”}
public class
ShanchuShuZi {
public static void
main(String[] args) {
String arr[]={
"0af3s2sf"
,
"s6ds1"
,
"jjww"
,
"lailai"
};
removenumber
(arr);
}
public static void
removenumber(String[] s){
ArrayList<String> list=
new
ArrayList<>();
for
(
int
i =
0
; i < s.
length
; i++) {
list.add(s
);
}
for
(
int
i = list.size()-
1
; i >=
0
; i--) {
String s1 = list.get(i);
for
(
int
i1 =
0
; i1 < s1.length(); i1++) {
if
(s1.charAt(i1)>=
'0'
&&s1.charAt(i1)<=
'9'
){
System.
out
.println(i);
System.
out
.println(list.size());
System.
out
.println(
"----------"
);
list.remove(i);
break
; 易错处
}
}
}
System.
out
.println(list);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2