小言_互联网的博客

Java基础入门(六)

192人阅读  评论(0)

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随机数:是引用数据类型的一种,可以帮助我们获取随机数.
使用步骤:

  1. 导包:找到要使用Random类(java提供)
import java.uitl.Random;
  1. 创建对象,为Random类型变量赋值
数据类型 变量名 = 对象;==>定义变量
Random r = new Random();
  1. 通过变量名.方法名(),调用Random类中的方法
获取0到maxValue之间的一个随机数,包含0,不包含maxValue [0,maxValue)
int i = r.nextInt(int maxValue);

2.2 Scanner获取用户在键盘输入的数据

Scanner类的作用:Scanner是引用数据类型的一种,是java给我们提供好的类.
使用步骤:

  1. 导包:找到要使用的类,需要写在类的上边
import java.util.Scanner;
  1. 创建对象,为引用数据类型变量赋值
数据类型 变量名 = 创建对象;[固定写法]
Scanner sc = new Scanner(System.in);
  1. 可以通过变量名,调用Scanner类中的方法
获取用户输入的整数,获取到回车或者空格结束
int i = sc.nextInt();
获取用户输入的字符串,获取到回车或者空格结束
String s = sc.next();

3. 综合应用

3.1 双色球开奖核心算法

需求:

  1. 出奖号码由6个红球 + 1蓝球组成
  2. 每个红球是1—33之间的一个数字
  3. 蓝球是1—16之间的一个数字
  4. 本题目不考虑:重复、红球排序的问题
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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场