今日内容
-
断点调试
-
知识点复写
一、断点调试
-
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; }