08-Debug和编程练习

第一章:Debug模式

1.1什么是Debug模式

是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。

1.2Debug模式操作流程

  • 如何加断点

    • 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可

    细节:

    ​ 在每一个方法的第一行有效语句前面打上断点,而且一个方法,只打一个。

    01

  • 如何运行加了断点的程序

    • 在代码区域右键Debug执行

    02

  • 看哪里

    • 看Debugger窗口

    03

    • 看Console窗口

    04

  • 点哪里

    • 点Step Into (F7)这个箭头,也可以直接按F7

    05

  • 如何删除断点

    • 选择要删除的断点,单击鼠标左键即可

    06

    • 如果是多个断点,可以每一个再点击一次。也可以一次性全部删除

    07

1.3 debugder断点调试的细节

1.断点调试可以控制程序一步一步的运行,停在背景色变深的那行代码

2.断点调试不会回到上一步。

3.如果在断点调试中涉及打印语句,会把结果输出到控制台上面

4.如果在断点调试中涉及键盘录入,那么必须要到控制台输入数字,否则断点调试无法向下运行

第二章 编程思维训练

3.1 练习1求和(掌握)

​ 有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。

求出该数组中满足要求的元素和,要求是:求和的元素个位和十位都不能是7,并且只能是偶数。

代码示例:

//1.定义数组
int[] arr = {68,27,95,88,171,996,51,210};
//定义求和变量
int sum = 0;
//2.遍历数组得到每一个元素
for (int i = 0; i < arr.length; i++) {
//条件一:个位不能是7
//条件二:十位不能是7
//条件三:只能是偶数
//先获得个位
int ge = arr[i] % 10;
//再获得十位
int shi = arr[i] / 10 % 10;
if(ge != 7 && shi != 7 && arr[i] % 2 ==0){
sum = sum + arr[i]; //+=
}
}
//3.打印输出
System.out.println(sum);

3.2 练习2 查找元素(掌握)

将 1~ 100 之间的10个随机数存入到数组当中。

键盘录入一个整数,查询当前数据在数组中存在的索引。

代码示例:

public class Test3 {
public static void main(String[] args) {
//读题拆解法:把一个复杂的题目拆解成很多的小问题,一步一步的去完成
//读题拆解法
//1.将 1~ 100 之间的10个随机数存入到数组当中。
//定义一个长度为10的数组,准备存储数据
int[] arr = new int[10];
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
//对数组里面的每一个元素进行赋值
int num = r.nextInt(100) + 1;
arr[i] = num;
}
//2.验证结果
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
//3.键盘录入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number = sc.nextInt();
System.out.println("刚刚输入的数字为:" + number);
//4.定义一个方法获取number在arr数组中的索引
int index = getIndex(arr,number);
//5.输出打印
System.out.println(index);
}
//获取number在arr数组中的索引
public static int getIndex(int[] arr, int number) {
for (int i = 0; i < arr.length; i++) {
if(number == arr[i]){
return i;
}
}
//如果循环结束之后,还没有找到一样,就表示不存在
//约定的习惯:如果在查找索引时,不存在就返回-1,因为任意的数组都没有-1索引、
return -1;
}
}

3.3 练习3随机点名器(掌握)

​ 键盘录入班级人数, 根据班级人数录入班级学员姓名

​ 从录入的学员姓名中, 随机取出一个, 并打印在控制台

代码示例:

public class Test4 {
public static void main(String[] args) {
//1.键盘录入班级人数
Scanner sc = new Scanner(System.in);
System.out.println("请输入班级的人数");
int count = sc.nextInt();
//2.根据人数创建数组存姓名
//我们是根据键盘录入的数据来创建数组的,所以长度为count
//表示键盘录几,我们就创建一个对应长度的数组
String[] arr = new String[count];
//3.键盘录入姓名添加到数组中
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入学生的姓名");
String name = sc.next();
//把键盘录入的姓名再添加到数组中
arr[i] = name;
}
//当循环结束之后,就表示所有的姓名都已经存入到数组当中了
//4.随机抽取
Random r = new Random();
//赵杰 李磊 杨晓权 吴沛澈 冯玉波
// 0 1 2 3 4
//在随机抽取的时候,可以先抽索引,然后利用索引再获取元素
int index = r.nextInt(arr.length);
//5.根据索引获取元素
String name = arr[index];
//6.输出打印
System.out.println(name);
}
}

3.5 练习4 评委打分(掌握)

需求:

​ 在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

代码示例:

public class Test13 {
public static void main(String[] args) {
//1.定义数组存入6个评委的打分
int[] arr = new int[6];
//2.生成6个数字,存入数组当中 0~100
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; ) {
System.out.println("请输入第" + (i + 1) + "个评委的打分");
int score = sc.nextInt();
if (score >= 0 && score <= 100) {
//只有当分数在范围之内,才会添加到数组当中
arr[i] = score;
//只有添加成功之后,那么索引才会发生变化
i++;
} else {
System.out.println("分数超出范围");
continue;
}
}
//3.求平均分
int sum = getSum(arr);
int max = getMax(arr);
int min = getMin(arr);
int avg = (sum - max - min)/(arr.length - 2);
System.out.println(avg);
}
//1.我要干嘛? --- 求和
//2.需要什么? --- 数组
//3.调用处是否需要继续使用结果? 必须返回
public static int getSum(int[] arr){
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum = sum + arr[i]; //+=
}
return sum;
}
public static int getMax(int[] arr){
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if(arr[i] > max){
max = arr[i];
}
}
return max;
}
public static int getMin(int[] arr){
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if(arr[i] < min){
min = arr[i];
}
}
return min;
}
}

3.6 练习5 打印形状(掌握)

打印形状其实没有什么特殊的意义,为了锻炼大家循环嵌套的能力

所以只要把课堂的矩形和三角形打印出来就行,其他形状不需要考虑

需求1:打印矩形(掌握)

//目的:
//为了锻炼大家循环嵌套的能力而已
//把在一行打印5个*这件事情,重复了5次
//决定了行数
for (int i = 0; i < 5; i++) {
//目的:在一行打印5个*
for (int j = 0; j < 5; j++) {
System.out.print("*");
}
//打印完毕之后,进行换行
System.out.println();
}

需求2:打印正三角形(掌握)

/*
*
**
***
****
*****
*/
//把在一行打印5个*这件事情,重复了5次
//决定了行数
for (int i = 1; i <= 5; i++) {
//目的:在一行打印5个*
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
//打印完毕之后,进行换行
System.out.println();
}
//当i = 1 的时候,打印第一行,内循环范围:1~1
//当i = 2 的时候,打印第二行,内循环范围:1~2
//当i = 3 的时候,打印第三行,内循环范围:1~3
//。。。。
//当i = 5 的时候,打印第五行,内循环范围:1~5

3.7 练习6 99乘法表(了解)

分析:

​ 先打印形状,再修改内容

代码示例:

//先打印一个9行9列的矩形
//负责:打印几行
for (int i = 1; i <= 9; i++) {
//负责:在一行当中打印多少个*
for (int j = 1; j <= 9; j++) {
System.out.print("*");
}
System.out.println();
}
--------------------------------------------------------
//再打印一个直角三角形
//第一行:1个
//第二行:2个
//第三行:3个
//...
//负责:打印几行
for (int i = 1; i <= 9; i++) {
//负责:在一行当中打印多少个*
for (int j = 1; j <= i; j++) {
System.out.print("*");
//默认情况下一个制表符等于4个空格,除此之外还由一个对其的功能
}
System.out.println();
}
--------------------------------------------------------
//最后修改内容变成99乘法表
//负责:打印几行
for (int i = 1; i <= 9; i++) {
//负责:在一行当中打印多少个*
for (int j = 1; j <= i; j++) {
System.out.print(j + " * " + i + " = " + (i * j) + "\t");
//默认情况下一个制表符等于4个空格,除此之外还由一个对其的功能
}
System.out.println();
}

3.8 二维数组(了解)

分析:

​ 二维数组:数组里面存的还是其他数组。

静态初始化:

//首先是一个大数组,在大数组里面存了三个小数组。
//大数组的0索引,是第一个小数组
//大数组的1索引,是第二个小数组
//大数组的2索引,是第三个小数组
int[][] arr = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};

动态初始化:

//第一个方框里面表示大数组的长度
//第二个方框里面表示每一个小数组的长度
int[][] arr = new int[3][5];

获取元素:

int num1 = arr[0][1];
System.out.println(num1);

修改元素:

需求:把10修改为100
arr[2][1] = 100;

遍历二维数组:

//外循环:遍历大数组,得到大数组里面的每一个小数组
for (int i = 0; i < arr.length; i++) {
//i 表示大数组的索引
//arr[i] 依次表示每一个小数组
//内循环:遍历小数组,得到小数组里面的每一个元素
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
//表示一个小数组已经遍历完毕,所以换行处理
System.out.println();
}

3.9 练习7 商场营业额(了解)

需求:

​ 一家商场每个季度的销售额如下:单位万元。

​ 一季度:20,30,40

​ 二季度:10,35,42

​ 三季度:21,32,49

​ 四季度:51,45,78

要求:

​ 分别中四个数组将每一个季度的营业额存储,再把4个数组存储到一个大数组中。

求出全年的总销售额

代码示例:

//1,利用静态初始化定义一个二维数组
int[][] arr = {
{20,30,40},
{10,35,42},
{21,32,49},
{51,45,78}
};
//2.遍历求和
int sum = 0;
//遍历大数组
for (int i = 0; i < arr.length; i++) {
//i 表示大数组里面的每一个索引
//arr[i] 大数组里面的每一个小数组
for (int j = 0; j < arr[i].length; j++) {
sum = sum + arr[i][j];
}
}
//3.打印
System.out.println(sum);
posted @   OnlyOnYourself-Lzw  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示