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


一、如何进行猜数字游戏

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

二、技术准备

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的值+1
            System.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很有用的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值