Java基础入门(六)

article/2025/9/23 15:12:23

Java基础入门(六)

  • 1 Debug调试
    • 1.1 Debug概述
    • 1.2 Debug操作流程
      • 1.2.1 设置断点
      • 1.2.2 运行加了断点的程序
      • 1.2.3 Debugger窗口和Console窗口
      • 1.2.4 分步执行
      • 1.2.5 取消断点
      • 1.2.6 结束Debug
      • 1.2.7 注意事项
  • 2.基础中常用的类
    • 2.1 Random随机数
    • 2.2 Scanner获取用户在键盘输入的数据
  • 3. 综合应用
    • 3.1 双色球开奖核心算法
    • 3.2 数组去重
    • 3.3 统计在数组中出现次数最多的数字和次数
    • 3.4 随机抽奖

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;}}}

http://chatgpt.dhexx.cn/article/Dk95v92Z.shtml

相关文章

Java基础之入门(一)

文章目录 Java帝国的诞生1. Java初生2. Java的发展3. Java特性和优势4. JVM、JRE、JDK5. Java程序的运行机制6.注释7. 标识符和关键字7.1 关键字7.2 标识符 8. 数据类型8.1 基本数据类型8.1.1 字符案例8.1.2 整型案例8.1.3 浮点型案例 8.2 引用数据类型 9. 类型转换9.1 转换方式…

java入门基础

语法基础 变量和常量 字符串 tring 类型是引用类型 字符串拼接可以直接用加号连接 自动类型转换 向上类型转换&#xff0c;是小类型到大类型的转换。 和C语音一样 int类型可以自动转换为double 但是double需要强制转换才能转换为int 强制类型转换 向下类型转换&…

JAVA基础入门学习

书籍推荐和视频推荐 Java核心卷I java核心卷II可以买也可以不买。java核心卷I只看前9章&#xff0c;其他不用看。身边同学都认为这本书不适合初学者&#xff0c;但是如果你之前看过java学习视频&#xff0c;那么这本书很适合你。这本书主要让你对java知识有个系统的学习&…

JAVA入门及基础

随着技术的不断发展&#xff0c;编程语言的种类也在越来越多&#xff0c;由全国知名TIOBE编程语言社区发布的编程语言排行榜来看&#xff0c;我们的JAVA在近两年来仍然占据榜二榜三&#xff0c;那么能一直稳居前排必然是有他的原因的&#xff1a;我们的JAVA具有使用广泛&#x…

《Java基础入门》第三版--黑马程序员课后习题(编程部分)

第 1 章 Java 开发入门 第 2 章 Java 编程基础 1. 编写程序,计算13…99的值,要求如下&#xff1a; (1)使用循环语句实现1~99的遍历 (2)在遍历过程中,通过条件判断当前的数是否为奇数,如果是就累加,否则不加。 public class getSum { 2 public static void main(String[] ar…

《Java基础入门》笔记——01 Java初步

1 关于Java 1.1 Java的发展简史 Java之父——Gosling(高司令)98年&#xff0c;Java2企业平台J2EE发布99年发布J2SE(标准版)、J2EE(企业版)、J2ME(微型版)04年&#xff0c;发布JavaSE5.009年&#xff0c;Oracle收购Sun14年&#xff0c;发布JavaSE8 1.2 Java语言的特点 简单。…

java基础入门(完整详细版)

前言&#xff1a; 这篇教程对没学过java的完全适用这篇教程是一个学习方向的引导&#xff0c;且只针对基础入门。 一.入门篇 1.安装JDK的运行环境 1.1 下载JDK 直接官网下载&#xff1a;http://www.oracle.com/&#xff1b;链接&#xff1a;网盘安装JDK点击就可以下载(推荐…

Linux udev规则编写

编写本文的目的: 看完本章,朋友们可以进行随心所欲的运用udev,编写udev规则,更好的管理Linux设备。例如,把硬盘sda根据盘的SN码生成一个软连接,使得SN码当做sda一样使用。 在文章结束后,既可以有方案可以实现。 udev是什么? udev 是 Linux2.6 内核里的一个功能,它替代…

udev的rules编写

1.综述 本文简单介绍udev机制&#xff0c;并编写udev规则&#xff0c;实现手机即U盘自动挂载 2.udev介绍 udev 是 Linux2.6 内核里的一个功能&#xff0c;它替代了原来的 devfs&#xff0c;成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行&#xff0c;通过帧听内…

[Linux 基础] -- udev 和 rules 使用规则

前言&#xff1a; 本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件&#xff0c;然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例。本文会使那些需要高效地、方便地管理 Linux 设备的用户受益匪浅&#xff0c;这些用…

linux udev

了解udev (Linux dynamic device management) 1.概述 Udev is the device manager for the Linux kernel. Udev dynamically creates or removes device node files at boot time in the /dev directory for all types of devices. udev is a replacement for the Device File…

udev(六):udev

原创文章&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; 作者&#xff1a;清林&#xff0c;博客名&#xff1a; 飞 空静渡 <!-- page { margin: 2cm } P { margin-bottom: 0.21cm } --> 基于上面提到的问题&#xff0c;便开始了 udev 的项目。 …

udev(八):实战:使用udevadm修改usb优盘在/dev下的名字

原创文章&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; 作者&#xff1a;清林&#xff0c;博客名&#xff1a; 飞 空静渡 udev的规则的编写&#xff0c;我这里就不说了&#xff0c;大家可以在udev的文档中可以了解&#xff0c;有时间的话我在安排一…

Linux下udev规则详解

如何运用udev&#xff1f;编写udev规则&#xff1f;通过udev更好的管理Linux设备? udev是什么&#xff1f; udev 是 Linux2.6 内核里的一个功能&#xff0c;它替代了原来的 devfs&#xff0c;成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行&#xff0c;通过侦…

Udev设备管理器

udev 引入 在2.4内核中 引入了 devfs&#xff0c;他支持设备节点的动态创建。devfs提供了在内存中的文件系统中创建设备节点的能力。设备驱动程序能够自主的管理自己的设备文件。而命名节点的任务还是落到了设备驱动程序头上。但是&#xff0c;设备命名策略是可管理的&#xf…

linux下udev详解

一.udev简介 udev是一个设备管理工具&#xff0c;udev以守护进程的形式运行&#xff0c;通过侦听内核发出来的uevent来管理/dev目录下的设备文件。udev在用户空间运行&#xff0c;而不在内核空间 运行。它能够根据系统中的硬件设备的状态动态更新设备文件&#xff0c;包括设备…

[2020.1.14][udev] udev介绍

1 什么是udev udev是一种工具&#xff0c;它能够根据系统中的硬件设备的状态动态更新设备文件&#xff0c;包括设备文件的创建&#xff0c;删除等。 设备文件通常放在/dev目录下。使用udev后&#xff0c;在/dev目录下就只包含系统中真正存在的设备。 设备访问控制udev:user …

LINUX下 Udev详解

如果你使用Linux比较长时间了&#xff0c;那你就知道&#xff0c;在对待设备文件这块&#xff0c;Linux改变了几次策略。在Linux早期&#xff0c;设备文件仅仅是是一些带有适当的属性集的普通文件&#xff0c;它由mknod命令创建&#xff0c;文件存放在/dev目录下。后来&#xf…

wmic bug

今天尝试用wmic进行横向移动&#xff0c;老是出现 , - Alias not found&#xff0c;再三确认不是命令的问题&#xff0c;尝试修改域控用户的密码后成功解决&#xff0c;难道这时wmic的bug&#xff1f;&#xff1f;&#xff1f; 猜测是因为密码种含有 , . 这样的符号导致命令产生…

wmic命令学习

我目前知道wmic可以查询进程&#xff0c;还可以查询服务。查询进程使用wmic process,如果想知道进程的名字、进程号、执行文件路径可以通过get来获取&#xff0c;还可以根据where筛选进程进行查询。 wmic process get name, processid,executablepath 查询主机进程信息&#xf…