今天,长沙黑马程序员老师为大家讲解如何正确使用调试程序:
一. Debug课程引言
我们写程序的时候,经常会发生也被称为错误的问题。 例如,程序执行错误,结果与预想不同等。 面对这些问题,尤其是对初学者来说有很大的烦恼,在解决问题的过程中会消耗很多时间。 因为我找不到解决问题的方法。
所以,我认为有必要开发提高大家解决问题能力的课程。 因为无论是对于现在的学习,还是将来的工作,解决漏洞都是非常重要的能力。 因为bug无处不在,所以可以说bug是我们开发的伙伴。 只有我们能征服这些臭虫,才能征服开发工作。
二. bug分类
程序中的错误大致分为两种:编译时错误和运行时错误。
1 .编译时错误
这样的问题基本上是一些语法错误,哪里有红色的波浪线,哪里就有问题。
a .弄错了类名、方法名、变量名
b .你把标点符号搞错了
c .括号不匹配
d .修改了代码,没有保存
e .方法中没有return语句
这些问题是最基本的语法形式问题,需要知道如何解决。 这不是这次课的重点。
2 .运行时错误
运行程序时产生的错误才是我们课程的重点。
运行程序时发生错误的原因很复杂,可能包括
a .程序无法正常运行,并报告错误(例如NullPointerException )。
b .程序可以正常运行,但结果错误
这些bug的原因很复杂,看起来没有什么问题,执行起来也没错,但结果是错误的代码,让人头疼。 此时,为了调试程序,需要使用专业的调试工具。
三.调试APP
为了让大家熟悉调试工具,提高解决错误的能力,在基础班的各个阶段分别设置有错误的案例,通过调试方式查找问题。
有句老话叫“授人以渔不如授人以渔”,通过学习这些案例,我希望大家以后面对问题也能先自己解决。 大家毕业工作,拿别人的工资,到时候遇到臭虫,谁来解决,只能自己想办法。
1 .调试案例1
//作为参数的基本类型
公共服务语音(inta ) {
a=a 1;
}
//作为参数引用类型
publicstaticvoidshow(int[]arr ) {
arr[0]=1;
}
2 .调试案例2
/*
*分析以下要求并在代码中实现(循环,if ) :
)1)打印1到100之间的整数,如果数字中包含9,则跳过
)2)在每行输出5个满足条件的数,之间用空格分隔
(3)例如1 )2)3)4) 5
*/
公共静态语音功能3 (
int count=0;
for(intI=1; i100; I ) {
if (! (i==9||i/10==9) ) }{
system.out.print(I ' );
出局;
}
if (计数%5==0) {
System.out.println (' );
}
}
}
执行结果如下。 在38到40之间添加了空行
…省略……
34 35 36 37 38
40 41 42 43 44
…省略……
3 .调试案例3
公共班级富户{
资讯科技
a;public Fu() {
a=20;
show();
}
public void show(){
System.out.println(a);
}
}
public class lgdwd extends Fu{
int a;
public lgdwd() {
a=20;
}
public void show(){
System.out.println(a);
}
public static void main(String[]args){
lgdwd z=new lgdwd();
z.show();
}
}
打印结果为:
0
20
4. Debug案例4
下面字符串中”java”出现的次数
“sunjavahpjavaokjavajjavahahajavajavagoodjava”
String s ="sunjavahpjavaokjavajjavahahajavajavagoodjava";
int count = 0;
int index=0;
while (s.indexOf("java") != -1) {
index = s.indexOf("java", index);
if (index != -1) {
index = index + 1;
count++;
}
}
System.out.println(count);
5. Debug案例5
public static void main(String[] args) {
getDir(newFile("C:"));
}
/*
* 打印输出指定目录下所有的.java文件(包含子目录)
*/
public static void getDir(File dir){
File[] files = dir.listFiles();
for(File f:files){
if(f.isDirectory()){
getDir(f);
}else{
if(f.getName().endsWith(".java")){
System.out.println(f);
}
}
}
}
Exception in thread "main" java.lang.NullPointerException
atcn.itcast.demo1.Demo4.getDir(Demo4.java:15)
atcn.itcast.demo1.Demo4.getDir(Demo4.java:17)
atcn.itcast.demo1.Demo4.getDir(Demo4.java:17)
atcn.itcast.demo1.Demo4.main(Demo4.java:7)
如果有需要了解更多的学习资源可以关注一下微信订阅号“黑马程序员长沙中心”。