java基础知识---eclipse的断点调试和循环语句

今日内容

  • 断点调试

  • 知识点复写

一、断点调试

  • 1.作用

    断点调试,让我们看到程序的执行过程,同时能够看到变量的变化情况
    帮助我们排查程序中的错误
    
  • 2.步骤

    打断点:
        在代码编辑区域最左边【双击】,打断点
    Debug运行:
        方法1:点击绿色小虫子
        方法2:右键-->Debug As-->Java Application
        程序会从上往下执行,当执行到断点处时,会停下来
    单行执行:
        点击工具栏向下的小箭头(下面有一个横杠)    
    进入到方法中执行:
        点击工具栏向下的小箭头(下面有两个横杠)
    

    下面准备了两个案例,我们试着用Debug调试一下,掌握Debug调试的步骤

  • Debug案例1:

    //基本类型作为参数
    public static void show(int a){
        a=a+1;
    }
    
    //引用类型作为参数
    public static void show(int[] arr){
        arr[0]+=1;
    }
    
  • Debug案例2:

    /*
        分析以下需求,并用代码实现(循环,if):
        (1)打印1到100之内的整数,但数字中包含9的要跳过
        (2)每行输出5个满足条件的数,之间用空格分隔
        (3)如:1 2 3 4 5 
     */
    public static void function3(){ 
        int count=0;    
        for(int i=1;i<100;i++){
            if(!(i%10==9||i/10%10==9)){
                System.out.print(i+" ");
                count++;        
            }
    
            if(count%5==0){
                System.out.println("");
            }
        }
    }
    
    /*
        执行结果如下:在38和40之间多了一个空行
        .....省略......
        34 35 36 37 38 
    
        40 41 42 43 44 
        .....省略......
    */
    

二、前面知识点复写

  • 1. 打印输出所有的回文数

    /*
        需求:在控制台输出所有满足条件的5位数
            条件:个位==万位,十位==千位
    */
    public static void main(String[] args){
        //5位数告诉了我们数据的范围,用for循环实现
        for(int x=10000; x<100000; x++) {
            //拿到每一个5位数后,获取其个位,十位,千位,万位的数据
            int ge = x%10;
            int shi = x/10%10;
            int qian = x/10/10/10%10;
            int wan = x/10/10/10/10%10;
    
            //根据条件进行判断,把满足条件的数据输出即可
            if((ge == wan) && (shi == qian)) {
                System.out.println(x);
            }
        }
    }
    
  • 2.按要求写代码

    /*
        定义一个int类型的一维数组,内容{171,72,19,16,118,51,210,7,18}
        求出该数组中满足要求的元素和。
            要求:元素的个位和十位不能包含7,并且只能为偶数。
    */
    public static void main(String[] args) {
        //定义一个int类型的一维数组
        int[] arr = {171,72,19,16,118,51,210,7,18};
    
        //定义一个求和变量
        int sum = 0;
    
        //遍历数组,获取数组中的每一个元素
        for(int x=0; x<arr.length; x++) {
            //判断该元素是否满足条件,如果满足条件就累加
            if((arr[x]%10 != 7) && (arr[x]/10%10 != 7) && (arr[x]%2 == 0)) {
                sum += arr[x];
            }
        }
    
        //输出求和结果
        System.out.println("sum:"+sum);
    }
    
  • 3.不死神兔问题

    /*
        斐波那契提出一个假设:
            有一对兔子,从出生后第3个月起每个月都生一对兔子,
            小兔子长到第三个月后每个月又生一对兔子,
            假如兔子都不死,问第二十个月的兔子对数为多少? 
    
        不死神兔问题,演化过来其实就是一个数学问题(不要再关注兔子了),如下:
        //找出下面数列的规律
        1,1,2,3,5,8,13,21,34....
    
        规律:
            第一个数是   1
            第二个数是   1
            从第3个数开始 这个数=前1个数+前2个数
    
        用Java代码去表示这些数
            //不止一个数,所以可以采用数组来存储,假设有20个数
            int[] arr=new int[20];
            //第一个数是 1
            arr[0]=1;
            //第二个数是 1
            arr[1]=1;
            //从第3个数开始 这个数=前1个数+前2个数
            arr[2]=arr[1]+arr[0];
            arr[3]=arr[2]+arr[1];
            ...
            arr[n]=arr[n-1]+arr[n-2];   
    
    */
    public static void main(String[] args) {
        //不止一个数,所以可以采用数组来存储,假设有20个数
        int[] arr = new int[20];
        //第一个数和第二个数,都是1
        arr[0] = 1;
        arr[1] = 1;
        //从第3个数开始 这个数=前1个数+前2个数
        for(int x=2; x<arr.length; x++) {
            arr[x] = arr[x-1] + arr[x-2];
        }
        //输出结果
        System.out.println("第二十个数为:"+arr[19]);
    }
    
  • 4.评委打分问题

    /*
        在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
        选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值。
        请写代码实现。(不考虑小数部分)
    
        分析:
            A:定义一个长度为6的数组
            B:键盘录入评委的分数
            C:写方法实现获取最高分,最低分
            D:写方法求评委的分数和
            E:平均分:(和-最高分-最低分)/(arr.length-2)
            F:输出平均分即可
    */
    public static void main(String[] args) {
        //定义一个长度为6的数组
        int[] arr = new int[6];
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        //键盘录入评委的分数
        for(int x=0; x<arr.length; x++) {
            //接收数据
            System.out.println("请输入第"+(x+1)+"个评委给出的分数(0-100):");
            int score = sc.nextInt();
            arr[x] = score;
        }
        //写方法实现获取最高分,最低分
        //调用方法
        int max = getMax(arr);
        int min = getMin(arr);
        //写方法求评委的分数和
        int sum = sum(arr);
        //平均分:(和-最高分-最低分)/(arr.length-2)
        int avg = (sum-max-min)/(arr.length-2);
        //输出平均分即可
        System.out.println("该选手的最终得分是:"+avg);
    }
    
    //求数组元素的和
    public static int sum(int[] arr) {
        //定义求和变量
        int sum = 0;
    
        for(int x=0; x<arr.length; x++) {
            sum += arr[x];
        }
        return sum;
    }
    
    //求数组中元素的最小
    public static int getMin(int[] arr) {
        //定义参照物
        int min = arr[0];
    
        for(int x=1; x<arr.length; x++) {
            if(arr[x] < min) {
                min = arr[x];
            }
        }
    
        return min;
    }
    
    //求数组中元素的最大值
    public static int getMax(int[] arr) {
        //定义参照物
        int max = arr[0];
    
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
    
        return max;
    }
    
  • 5.数组元素反转

    public static void main(String[] args) {
        //定义一个长度为5的数组
        int[] arr = new int[5];
        //通过键盘录入数据给数组中的元素赋值
        Scanner sc = new Scanner(System.in);
        for(int x=0; x<arr.length; x++) {
            System.out.println("请输入"+(x+1)+"个元素值:");
            int number = sc.nextInt();
            arr[x] = number;
        }
        //反转前
        printArray(arr);
        //定义方法将arr数组中的内容反转
        reverse(arr);
        //定义方法对反转后的数组进行遍历
        printArray(arr);
    }
    
    //把指定数组中的元素反转
    public static void reverse(int[] arr) {
    	for(int start=0,end=arr.length-1;start<=end;start++,end--){
    		//start和end索引位置的元素互换
    		int temp=arr[start];
    		arr[start]=arr[end];
    		arr[end]=temp;
    	}
    }
    //遍历数组
    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0; x<arr.length; x++) {
            if(x==arr.length-1) {
                System.out.println(arr[x]+"]");
            }else {
                System.out.print(arr[x]+", ");
            }
        }
    }
    
    
  • 6.数组元素查找

    /*
        查找指定元素再数组中第一次出现的索引
        参数解释
            arr[] arr  指定的数组
            int value  要查找的元素
        返回值解释
            int类型 
            返回value这个元素在arr数组中第一次出现的索引,如果没有找到返回-1
    
    */
    public static int getIndex(int[] arr,int value) {
        //遍历数组,依次比较元素,如果相等,就把该处的索引返回即可
        for(int x=0; x<arr.length; x++) {
            if(arr[x] == value) {
                return x;
            }
        }
        return -1;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值