【一起学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中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在