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

Java基础入门(六)相关推荐

  1. Java基础入门必备词汇汇

    #Java基础入门必备词汇汇 一 1.Public ['pʌblik] 公开 2.Static ['stætik] 静态 3.void [vɔid] 无返回 4.main [main] 主要的,主方法 ...

  2. Java基础入门笔记2

    Java基础入门笔记2 一. 为什么把程序出错叫做"BUG"? 1. 原因是臭虫或者虫子,现在用来指代电脑系统或者程序中隐藏的一些漏洞或者一些问题,所以现在程序出问题就叫" ...

  3. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  4. java基础入门课后习题_《Java基础入门》课后习题及答案

    <Java基础入门>课后习题及答案Java基础入门,课后习题,答案 博学谷--让IT教学更简单,让IT学习更有效 <Java基础入门>课后习题 第1章Java开发入门 一.填空 ...

  5. java基础(六章)

    java基础(六章) 一.for循环的使用场合 l  while循环--先判断,再循环 while(1.条件表达式){      //2.循环操作      //3.更改循环条件表达式 } l  do ...

  6. java基础(六)多线程/设计模式

    这辈子没办法做太多事情,所以每一件都要做到精彩绝伦! People can't do too many things in my life,so everything will be wonderfu ...

  7. 叮!您收到一份超值Java基础入门资料! 1

    Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家Java ...

  8. Java校招笔试题-Java基础部分(六)

    导语   Java 面试题集2021版 Java基础部分六 62.ArrayList和LinkedList 有什么异同之处? 63.HashMap和HashTable的区别 64.List和Map的区 ...

  9. Linux中的Java类,Java基础入门学习-Java中类的属性

    Java基础入门学习-Java中类的属性 发布时间:2006-05-27 00:46:15来源:红联作者:WWW Public.private.protected显示了三种类中的属性和服务的类型,pu ...

最新文章

  1. 如何发表一篇好的文章
  2. Ubuntu下Django+uWSGI+nginx部署
  3. sql server配置管理器在哪里看ip_微服务管理平台nacos虚拟ip负载均衡集群模式搭建...
  4. linux mount命令参数及用法详解
  5. 新浪微博推出具有中国特色的“关注但屏蔽”功能
  6. MySQL数据库入门到高薪培训教程(从MySQL 5.7 到 MySQL 8.0)
  7. iOS开发之手势识别
  8. python多线程 不在main_从python线程(不是main)启动pyQt线程有什么不...
  9. 新手进阶:LoadRunner中Pacing的设置
  10. LeetCode数据库 180. 连续出现的数字
  11. SAP License:SAP 期待CO新帐 VS FI新总帐
  12. 长春java开发能开多少钱,从理论到实践!
  13. 『ORACLE』 Linux和oracle用户下的常用命令(11g)
  14. PyTorch神经网络框架
  15. 常用的软件打包工具Inno Setup和AdvancedInstallerPortable
  16. 计算机数值中的乘法除法原理
  17. Pycharm 快捷键 整理
  18. Apache虚拟主机相关配置
  19. 热搜第一!名校博士挤破头进中学当老师,甚至还有颜宁弟子......
  20. 使用JS获取input值

热门文章

  1. 龚胤全云栖大会_2018云栖大会
  2. 网络基础应用层--HTTP协议
  3. 从键盘上输入一个整数 N,输出 1~N 之间能被 7 整除的整数的个数,以及这些能被 7 整 除的数的和
  4. 基于C++的K-means聚类算法实现
  5. Sentinel限流
  6. 计算机科学家证书,软件自动验证的追梦者——吴志林,2020年CCF-IEEE CS青年科学家奖获得者...
  7. PADS 怎么设置覆铜焊盘斜交连接,过孔是全连接的
  8. java中enhancer试什么_Java Enhancer類代碼示例
  9. cron 表达式周一到周五执行以及只有周六周天执行
  10. HBase的一点纪要