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
















