Debug调试程序入门

一、写在前面的话       

很久很久以前,在程序运行遇到问题时,我都是采用在控制台把变量打印出来以定位和分析问题。后来,看到同学帮我调试程序时用了Debug,一下子就找到了我的问题所在。当时的我以一种超级膜拜大神的眼神看着他,看他那么快速的操作着键盘,各种快捷键的按着,电脑的屏幕上各种代码文件跳来跳去,我当时天真地认为我这辈子都学不会这种技能。最近,我正在经历着从以前用Pyhton编程的习惯向用java编程的艰难转变过程,所幸身边有随时就可以请教的java师傅。在我遇到编写的程序运行不出预期的结果时,他一边帮我调试,一边教了我一招,用Debug去调试程序。接下来以一个小例子来说明一下,Debug调试程序的过程。

二、Debug 的关键点

1、选择要认为可能出现问题的程序语句,设置断点

2、选中程序语句所属的方法名,右击,选择Debug as

3、step into (F5) ,进入断点设置的方法里面

4、step over(F6),进入断点设置的语句

5、step return (F7),返回方法体,遍历一遍

快捷键:ctrl + shift + i  :调用方法返回值

三、Demo

1、正确的运行程序:

package beginner;

import java.util.Arrays;

/**
 * <blockquote><pre>
 * 反转句子;
 *  将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
 *  所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
 * </pre></blockquote>
 * @author lalalawxt
 * @version v1.0
 * @createDate 2019-05-14
 */
public class ConverseSentence {
    public static String reverse(String sentence) {
        String[] words = sentence.split(" ");
        StringBuffer mySentence = new StringBuffer();  
        for (int i = 0; i < words.length; i++) {
            int j = words.length - 1-i;
            mySentence.append(words[j]).append(" "); 
        }
        //删除最后一个单词后的空格
        int len = mySentence.length();
        mySentence.delete(len-1,len);
        return mySentence.toString();
    }
    
    public static void main(String []args ) {
      String sentence = "I am a boy";
       String revSentence = reverse(sentence);
       System.out.println(revSentence);
       
      
    }

}

控制台的输出:

boy a am I

2、错误的运行程序:

package beginner;

import java.util.Arrays;

/**
 * <blockquote><pre>
 * 反转句子;
 *  将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
 *  所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
 * </pre></blockquote>
 * @author lalalawxt
 * @version v1.0
 * @createDate 2019-05-14
 */
public class ConverseSentence {
    public static String reverse(String sentence) {
        String[] words = sentence.split(" ");
        StringBuffer mySentence = new StringBuffer();  
        for (int i = 0; i < words.length; i++) {
            int j = words.length - 1-i;
            mySentence.append(words[j]).append(" "); 
        }
        //删除最后一个单词后的空格
        //int len = mySentence.length();
       // mySentence.delete(len-1,len);
        mySentence.delete(words.length-1,words.length);
        return mySentence.toString();
    }
    
    public static void main(String []args ) {
      String sentence = "I am a boy";
       String revSentence = reverse(sentence);
       System.out.println(revSentence);
       
      
    }

}

    控制台的输出:

boya am I 

3、Debug 调试

(1)双击左侧栏,设置断点

(2)选中方法名,Debug as

(3)当鼠标放在断点句中的变量上,会自动显示变量的长度和值

(4)分析问题

       根据(3)的显示,mySentence的长度是11,而words的长度是4,要实现在mySentence里删除最后一个单词的空格,显然delete函数中定位的序数取错了。我们也可以进入delete的方法里去看一下其详细代码,看是否我们调用错了方法。按“F5”后程序界面就跳转到StringBuffer类中定义的delete方法体,根据方法定义,我们可知调用的方法参数输入格式没有错误。

       最后,关于调用方法返回值“Ctrl + Shift + i” ,进入断点设置的语句“F6”,返回方法体,遍历一遍“F7” 的使用方法在实际的调试程序过程中,根据自己的需求来选择使用吧。Debug调试的每个变量显示的值都是实际运行得到的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值