【一起学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

相关文章

捷瑞数字业绩波动性明显:关联交易不低,募资必要性遭质疑

《港湾商业观察》施子夫 5月22日,山东捷瑞数字科技股份有限公司(以下简称,捷瑞数字)及保荐机构国新证券披露第三轮问询的回复,继续推进北交所上市进程。 从2023年6月递表开始,监管层已下发三轮审核问询函,关注到捷瑞数字存在同业竞争、关联交易、募资合理性、期后业绩波动等焦点问题。公司的上市之路多少被阴影笼罩。​ 业绩波动遭问询 捷瑞数字成立于2000年,公司是一家以数字孪生驱动的工

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和MouseAdapter 2.mousePressed方法 二、坐标校正的具体实现方法 1.关于fillOval方法 2.坐标获取 3.坐标转换 4.坐

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

java8的新特性之一(Java Lambda表达式)

1:Java8的新特性 Lambda 表达式: 允许以更简洁的方式表示匿名函数(或称为闭包)。可以将Lambda表达式作为参数传递给方法或赋值给函数式接口类型的变量。 Stream API: 提供了一种处理集合数据的流式处理方式,支持函数式编程风格。 允许以声明性方式处理数据集合(如List、Set等)。提供了一系列操作,如map、filter、reduce等,以支持复杂的查询和转

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

详细分析Springmvc中的@ModelAttribute基本知识(附Demo)

目录 前言1. 注解用法1.1 方法参数1.2 方法1.3 类 2. 注解场景2.1 表单参数2.2 AJAX请求2.3 文件上传 3. 实战4. 总结 前言 将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性 可以在方法参数、方法或者类上使用 一般适用这几种场景: 表单处理:通过 @ModelAttribute 将表单数据绑定到模型对象上预处理逻辑:在请求处理之前

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus