第一章:Debug模式
1.1什么是Debug模式
是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
1.2Debug模式操作流程
如何加断点
- 选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可

如何运行加了断点的程序
- 在代码区域右键Debug执行

看哪里
- 看Debugger窗口

- 看Console窗口

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

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

- 如果是多个断点,可以每一个再点击一次。也可以一次性全部删除
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~100Scanner 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);
