文章目录
- 一、如何进行猜数字游戏
- 二、技术准备
- 1.for循环
- 2.while循环
- 3.continue和break
- 4.方法定义与调用
- 5.方法重载
- 三、猜数字游戏
- 总结
一、如何进行猜数字游戏
由定义一个变量获取系统给出的一定范围内的随机数,然后和用户输入的数进行比较,是大了还是小了,还是正好相等,如果相等则结束循环,并打印输出。
二、技术准备
1.for循环
代码如下(示例):
- 基本结构:
for(表达式1;表达式2;表达式3)
{
//循环体
}
表达式1用于初始化,在整个循环过程中只执行一次;表达式2的结果应该为逻辑值,决定是否继续循环,如果为true,则继续循环;表达式3在每次循环完成之后执行,主要作用是修改循环变量,循环多少次就会执行多少次;循环体就是要执行循环的部分。如果循环体只有一行代码,循环体的大括号可以省略。1、首先执行表达式1,进行初始化;
2、然后执行表达式5步;
3、执行循环体;
4、执行表达式3;转向表达式2
5、结束
- 案例:使用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);
- 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~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);
- 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
- continue主要在循环中使用,作用是跳出本次循环,如果后面有代码,本次煦暖中后面的代码不在执行。
- break主要在两个地方使用:
1.跳出循环,不再执行循环;
2.分支结构中使用,跳出选择结构。 - 实操:计算1到1000中能被3整除的数的和,如果和大于5000,不再计算,并输出这个和。
- 例:学会使用标记跳转
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很有用的。