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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听