【一起学Java第五期】猜数字游戏

2024-02-23 17:10

本文主要是介绍【一起学Java第五期】猜数字游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、如何进行猜数字游戏
  • 二、技术准备
    • 1.for循环
    • 2.while循环
    • 3.continue和break
    • 4.方法定义与调用
    • 5.方法重载
  • 三、猜数字游戏
  • 总结


一、如何进行猜数字游戏

由定义一个变量获取系统给出的一定范围内的随机数,然后和用户输入的数进行比较,是大了还是小了,还是正好相等,如果相等则结束循环,并打印输出。

二、技术准备

1.for循环

代码如下(示例):

  1. 基本结构:
    for(表达式1;表达式2;表达式3)
    {
    //循环体
    }
    表达式1用于初始化,在整个循环过程中只执行一次;表达式2的结果应该为逻辑值,决定是否继续循环,如果为true,则继续循环;表达式3在每次循环完成之后执行,主要作用是修改循环变量,循环多少次就会执行多少次;循环体就是要执行循环的部分。如果循环体只有一行代码,循环体的大括号可以省略。
    1、首先执行表达式1,进行初始化;
    2、然后执行表达式5步;
    3、执行循环体;
    4、执行表达式3;转向表达式2
    5、结束

  2. 案例:使用for循环求1~100的和(代码直接复制到你的main方法里面去就可以了,多修改几次表达式2的值,看看这个循环体是怎么运行的):

//定义一个sum用来储存和int sum =0;//定义整数变量i表示循环次数int i;//i=0完成循环变量的初始化,i<=100是循环的条件//i++表示在运行完成后修改增加循环变量的值for (i=0;i<=100;i++){//循环体sum+=i;//每次执行完这个语句后i的值+1System.out.println("当前i的值为"+i+"\t"+"sum当前的值为:"+sum);}System.out.println("-------------------------------");System.out.println("结束循环,和为:"+sum);

在这里插入图片描述

  1. for()里面的表示式都可以省略,但分号不能省略,视情况而用:
    此处的省略只是把表达式写在或定义在了其他地方,并不是语文意义上的省略
System.out.println("------------1、省略表达式1---------------");int sum1=0;int i1;i1=0;//表达式1是个空值,单分号还是不能省略for (;i1<=100;i1++)sum1+=i1;System.out.println(sum1);System.out.println("------------2、省略表达式2--------------");int sum2=0;int i2;for (i2=0;;i2++){if (!(i2<=100))break;sum2+=i2;}System.out.println(sum2);System.out.println("------------3、省略表达式3--------------");int sum3=0;int i3;for (i3=0;i3<=100;){sum3+=i3;i3++;}System.out.println(sum3);System.out.println("------------4、全部省略时--------------");int sum4=0;int i4;i4=0;for (;;){sum4+=i4;i4++;if ((i4>100)){break;}}System.out.println(sum4);

在这里插入图片描述

2.while循环

作用与for循环基本相同,只是结构不一样:
基本结构:
while(表达式1)
{
(循环体)
)
相比for循环,这个更容易理解,只要表达式1的值为true,就执行循环体,否则,就结束循环,表达式1的值会随着循环体的执行而发生变换,否则要么死循环,要么一次也不执行

  1. 假设1~n的和最接近10000,求n(即计算从1开始累加,到哪一个数时离10000最近):
System.out.println("===================1、while循环================");int sum=0;int i=0;while(sum<10000){i++;sum+=i;}if (sum-10000<10000-(sum-i)){System.out.println("最接近10000的累加值为:"+i);}else {System.out.println("最接近10000的累加值为:"+(i-1));}System.out.println("最接近10000的值是:"+sum);

在这里插入图片描述

  1. do-while循环
    基本格式如下:
    do
    {
    //循环体
    }(表达式1)
    表达式1任然是循环的条件,与while循环基本相同,只有以下两点区别:
    1、先循环,在判断条件,所以至少可以循环一次。
    2、while(表达式1)后面必须有分号。
        System.out.println("===================1、while循环================");int j=1;do{if (j%2==0){System.out.println(j+"");}j++;}while (j<20);

在这里插入图片描述while循环与do-while循环只有一次循环的时候不一样,后面的过程完全一样,如果肯定都能执行一次的话,两个的效果是完全一样的。
for循环与while循环的主要区别是:for循环通常是在知道循环次数的时候使用,而while循环通常是在不确定循环次数的时候使用

3.continue和break

  1. continue主要在循环中使用,作用是跳出本次循环,如果后面有代码,本次煦暖中后面的代码不在执行。

  2. break主要在两个地方使用:
    1.跳出循环,不再执行循环;
    2.分支结构中使用,跳出选择结构。

  3. 实操:计算1到1000中能被3整除的数的和,如果和大于5000,不再计算,并输出这个和。

  4. 例:学会使用标记跳转

        System.out.println("------------1、基本使用-----------------");int sum=0;int i=1;for(;i<1000;i++){//如果和大于1000,使用break退出循环if (sum>5000){break;}//如果不是3的倍数,就结束本次循环,继续循环if (i%3!=0){continue;}sum+=i;}System.out.println(sum);System.out.println("--------------2、使用标记跳转---------------");first:for (int j=1;j<=6;j++){//第一层循环System.out.println(j);second:for (int k=1;k<=j;k++){//第二层循环System.out.println("\t"+j+"*"+k+"="+j*k);if (k==2){break second;//跳出本次第二层循环}if (j>=4){continue first;//回到第一层循环}}}

在这里插入图片描述

4.方法定义与调用

先来一个例子:
int max=0;
if(a>b)
max=a;
else
max=b;
在实现这个功能的时候,不知道两个数是什么,所以假设两个数是a和b,在程序执行到这的时候,a和b的值就确定了,所以编写方法的时候用a和b表示,在这里a和b是参数,其他地方要调用这个方法的时候需要先对这两个数赋值,他们的值是由调用者决定的,所哟称为形参。
在方法执行结束的时候,需要把执行的结果发回给调用者,使用return语句,如:
return max;
方法的返回值类型需要在定义方法时声明。
编写好的方法是用来给其他地方调用的,所以必须命名,方便找到此方法。
方法的名字、参数和返回值通常称为方法头,如上面的方法头可以写成:
public static int max(int a,int b)
其中,public static是方法修饰符,max是方法的名字,max前面的int是方法返回值类型,括号中的int a,int 是形参,用来接收参数。

package com.luoyu.random;public class Method {public static void main(String[] args) {int x=10;int y=12;int result=max(x,y);//调用下面的方法,把x,y的值传过去,传给a,b,然后接收计算后返回的数System.out.println("比较大的那个数是"+result);}public static int max(int a,int b){int max;if (a>b){max=a;}else {max=b;}return max;}}

在这里插入图片描述1.如果方法不需要返回值,也就是说在那个方法里面只有打印语句之类的的时候,应该把返回值类型写成void,如同主方法main一样。
2.方法在调用的时候要知道方法是如何定义的。根据方法名进行调用,如果有返回值,要定义一个与返回值类型相同的变量来接收返回值。

5.方法重载

在Java中,同一个类出现2个或2个以上的方法名相同,参数列表(包括参数的数量、类型和次序)不同的方法,叫做重载。方法重载一般用于对不同类型的数据进行类似的操作.当调用一个重载的方法时,Java编译器通过调查语句中参数的数量,类型和次序既可以选择合适的方法。如果两个方法只是有不同的返回类型,则不叫重载

1.写一个重载方法,使其能能求两个整数的和、两个浮点数的和及三个整数的和 。

package com.luoyu.random;public class Load {public static void main(String[] args) {int y=12;int x=10;int result=add(x,y);System.out.println("两个整数的和为:"+result);double result2=add(12.5,23.6);System.out.println("两个浮点数的和为:"+result2);int result3=add(23,45,67);System.out.println("三个整数的和为:"+result3);}public static int add(int a,int b){int sum;sum=a+b;return sum;}public static double add(double a, double b){double sum;sum=a+b;return sum;}public  static int add(int a,int b,int c){int sum;sum=a+b+c;return sum;}
}

在这里插入图片描述

三、猜数字游戏

package com.luoyu.random;import java.util.Scanner;public class Random {public static void guess(){//没有实体返回值的方法int counter=0;int guessNumber=0;guessNumber=(int)(Math.random()*100)+1;Scanner sc=new Scanner(System.in);int number=0;while (true){System.out.println("请输入你猜的数字:");number = sc.nextInt();counter++;if (number<guessNumber){System.out.println("你猜小了,往大点猜试试。");}else if (guessNumber==number){System.out.println("恭喜你,猜对了。");break;}else {System.out.println("你猜大了,往小点猜试试。");}}System.out.println("你总共猜了"+counter+"次");}public static void main(String[] args) {guess();//调用上面的方法}
}

在这里插入图片描述


总结

建议在研究后自己再多改改我这代码里面的值或者方法名什么的,要确保自己是完全懂了的。
为了防止一些刚开始学的同学连代码改怎么拿过去用都不知道,我之后会把截止至这一期(第五期)的我写的代码全都上传上来,你们下载后打开IDEA然后左上角【File】->【Open】再找到你下载下来的我的那个文件夹就行了,直接点击确定导入,然后项目左边列表一一点开,想运行哪个页面的代码,直接在那个页面右键运行就行了,大家都需要好好学啊,Java很有用的。

这篇关于【一起学Java第五期】猜数字游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739323

相关文章

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Java中的JSONObject详解

《Java中的JSONObject详解》:本文主要介绍Java中的JSONObject详解,需要的朋友可以参考下... Java中的jsONObject详解一、引言在Java开发中,处理JSON数据是一种常见的需求。JSONObject是处理JSON对象的一个非常有用的类,它提供了一系列的API来操作J

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin