1 Debug调试
1.1 Debug概述
Debug:是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。
1.2 Debug操作流程
1.2.1 设置断点
1.2.2 运行加了断点的程序
在代码区域右键Debug执行,程序就会停留在添加的第一个断点处(即将执行):
1.2.3 Debugger窗口和Console窗口
Debugger窗口能够看到程序的执行流程和变量的变化:
Console窗口可以看到打印结果:
1.2.4 分步执行
点 Step Over(F8)这个箭头,可以逐行执行代码,但是遇到调用方法,不会进入到方法中:
点Step Into (F7)这个箭头,可以逐行执行代码,遇到调用方法,会进入到方法中,也可以直接按F7
点击Run to Cursor(Alt+F9)会直接执行到下个断点处:
1.2.5 取消断点
选择要删除的断点,单击鼠标左键即可。
如果是多个断点,可以每一个再点击一次。也可以一次性全部删除:
1.2.6 结束Debug
点stop结束:
1.2.7 注意事项
如果数据来自于键盘输入,一定要记住输入数据,不然就不能继续往下查看了。
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int a = sc.nextInt();
不输入数据,Debug不能往下查看
System.out.println("请输入一个整数:");
int b = sc.nextInt();
int sum = a+b;
System.out.println("sum:"+sum);
2.基础中常用的类
2.1 Random随机数
Random随机数:是引用数据类型的一种,可以帮助我们获取随机数.
使用步骤:
- 导包:找到要使用Random类(java提供)
import java.uitl.Random;
- 创建对象,为Random类型变量赋值
数据类型 变量名 = 对象;==>定义变量
Random r = new Random();
- 通过变量名.方法名(),调用Random类中的方法
获取0到maxValue之间的一个随机数,包含0,不包含maxValue [0,maxValue)
int i = r.nextInt(int maxValue);
2.2 Scanner获取用户在键盘输入的数据
Scanner类的作用:Scanner是引用数据类型的一种,是java给我们提供好的类.
使用步骤:
- 导包:找到要使用的类,需要写在类的上边
import java.util.Scanner;
- 创建对象,为引用数据类型变量赋值
数据类型 变量名 = 创建对象;[固定写法]
Scanner sc = new Scanner(System.in);
- 可以通过变量名,调用Scanner类中的方法
获取用户输入的整数,获取到回车或者空格结束
int i = sc.nextInt();
获取用户输入的字符串,获取到回车或者空格结束
String s = sc.next();
3. 综合应用
3.1 双色球开奖核心算法
需求:
- 出奖号码由6个红球 + 1蓝球组成
- 每个红球是1—33之间的一个数字
- 蓝球是1—16之间的一个数字
- 本题目不考虑:重复、红球排序的问题
public static void main(String[] args) {
//1.定义一个长度为6的int类型的数组
int[] arr = new int[6];
//2.创建Random对象,为Random变量赋值
Random r = new Random();
//3.遍历数组,获取每一个元素
for (int i = 0; i < arr.length; i++) {
//4.随机产生一个1-33之间的数字,给数组中的元素赋值
arr[i] = r.nextInt(33)+1;
}
//5.随机产生一个1-16之间的数字,赋值给一个变量,作为蓝色球
int blue = r.nextInt(16)+1;
//6.输出最终产生的双色球(遍历数组获取红球+蓝球)
System.out.print("红球:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println("蓝球:"+blue);
}
3.2 数组去重
需求:
有以下数组: {29, 35,29,23,56,23}
请编程,可以将这个数组中不重复的元素存储到一个新数组中.
public static void main(String[] args) {
//1.定义数组 {29, 35,29,23,56,23}
int[] arr1 = {
29, 35,29,23,56,23};
//2.定义int类型的新数组,长度和源数组相同
int[] arr2 = new int[arr1.length];
//3.定义一个int类型的整数,初始值为0,记录第二个数组的索引
int index=0;
//4.遍历第一个数组,获取每一个元素
for (int i = 0; i < arr1.length; i++) {
//5.定义一个布尔值,初始值为false,记录元素是否出现
boolean flag = false;
//6.遍历第二个数组,获取每一个元素
for (int j = 0; j < arr2.length; j++) {
//7.使用第一个数组遍历得到的元素,依次和第二个数组中的元素比较
if(arr1[i]==arr2[j]){
//8.一样,修改布尔值为true(存在)
flag = true;
break;
}
}
//9.内层循环结束之后,对布尔值进行判断
//10.是false(不存在)
if(flag==false){
//11.把第一个数组的元素添加到第二个数组中
arr2[index] = arr1[i];
//12.修改索引的值++
index++;
}
}
System.out.println("-----------------遍历arr2数组--------------------");
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]+" ");
}
}
3.3 统计在数组中出现次数最多的数字和次数
需求:
有以下数组: {29, 35,29,88,35,7,35,7}
请编程,可以统计这个数组中哪个元素出现的次数最多?打印这个数字和出现的次数.
public static void main(String[] args) {
//1.定义原数组:{29, 35,29,88,35,7,35,7}
int[] arr1 = {
29, 35,29,88,35,7,35,7};
//调用去重的方法
int[] arr2 = quChong(arr1);//{29 35 88 7 0 0 0 0 }
//3.定义一个变量maxCount初始值为0作为最大的次数,定义一个变量maxNumber初始值为0作为最大次数对应的数字
int maxCount = 0;
int maxNumer = 0;
//4.判断“新数组”中每个元素在“原数组”中出现的次数
for (int i = 0; i < arr2.length; i++) {
if(arr2[i]!=0){
int count = 0;
for (int j = 0; j < arr1.length; j++) {
if(arr2[i]==arr1[j]){
count++;
}
}
//5.使用元素的次数和最大的次数进行比较,元素的次数>最大次数
if(count>maxCount){
//6.maxCount最大次数=元素的次数,maxNumber=元素;
maxCount = count;
maxNumer = arr2[i];
}
}
}
System.out.println("元素:"+maxNumer+"在数组中出现的次数最多,出现的次数为:"+maxCount);
}
3.4 随机抽奖
公司直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。
打印效果如下:(随机顺序,不一定是下面的顺序)
888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出
public static void main(String[] args) {
int[] arr = {
2,588,888,1000,10000};
//定义index数组,元素大于等于length都行
int[] indexArr = {
6,6,6,6,6};
//定义变量count记录找到已打印的index个数
int count = 0;
Random r = new Random();
while(true){
boolean flag = false;
int index = r.nextInt(5);
for (int i=0;i<indexArr.length;i++){
if (indexArr[i] == index){
flag = true;
break;
}
}
if (!flag){
indexArr[count] = index;
System.out.println(arr[index]+"元的奖金被抽出");
count++;
}
if (count == 5){
break;
}
}
}
转载:https://blog.csdn.net/tysearch/article/details/115584487