Java控制语句和方法,方法的重载及随机数和递归

随机数

Math类的使用

  1. java.lang包中的Math类提供了一些用于数学计算的方法。
  2. Math.random()该方法用于产生一个0到1区间的double类型的随机数,但是不包括1.就是[x,y)
package cn.xjion.pro02;

import java.util.Scanner;
/**
 * 测试猜大小,随机数
 * @author xjion
 *
 */
public class TestRandom {
	public static void main(String[] args) {
//		系统随机生成1-100的随机数
		int a = (int)(Math.random()*100)+1;
//		获取控制台
		Scanner sc = new Scanner(System.in);
//		打印提示语句
		System.out.println("请猜测一个数字");
//		接收用户输入
		int num = sc.nextInt();
//		定义一个i保存用户猜测次数
		int i = 1;
//		循环判断用户输入是否不等于随机数,num = sc.nextInt(),i++实现重新输入,次数累加
		for(i=1;num!=a;num = sc.nextInt(),i++){
//			小于就提示猜小了重新输入
			if(num<a){
				System.out.println("猜小了,请重新猜测");
//			大于就提示猜小了重新输入
			}
			if(num>a){
				System.out.println("猜大了,请重新猜测");
			}
		}
//		判断是否相等,相等就判断次数并打印
		if(num==a){
			if(i<=5){
				System.out.println("第"+i+"次就猜中了,去买彩票吧");
			}
			if(i>5&&i<=10){
				System.out.println("第"+i+"次就猜中了,今天手气不错哦");
			}
			if(i>10){
				System.out.println("第"+i+"次才猜中了,手气也太差了吧");
			}
		}
	}
}

 

一、选择结构

控制语句分三类:顺序,选择,循环

if单选择结构

语法结构:

if(布尔表达式){

    语句块

}

流程:

if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。

实例:

package cn.xjion.pro02;
/**
 * 测试if,猜骰子大小
 * @author xjion
 *
 */
public class TestIf {
	public static void main(String[] args) {
//		使用Math类的random()函数来调用
//		定义三个筛子
		int sieve1 = (int)(Math.random()*6)+1;
		int sieve2 = (int)(Math.random()*6)+1;
		int sieve3 = (int)(Math.random()*6)+1;
//		定义一个变量存储三个筛子的总和
		int sieveSum = sieve1 + sieve2 + sieve3;
//		判断比较大小,对其打印结果
		if (sieveSum<=6) {
			System.out.println("筛子总和为:"+sieveSum+",小赢");
		}
		if (sieveSum>6&&sieveSum<12) {
			System.out.println("筛子总和为:"+sieveSum+",中赢");
		}
		if (sieveSum>=12) {
			System.out.println("筛子总和为:"+sieveSum+",大赢");
		}
		
	}
}

if else双选择结构

语法结构:

if(布尔表达式){

    语句块1

}else{

    语句块2

}

流程:

 当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。

实例:

package cn.xjion.pro02;
/**
 * 测试if else双选择结构
 * @author xjion
 *
 */
public class TestIfElse {
	public static void main(String[] args) {
		//随机产生一个[0.0,4.0)区间的半径,并根据半径求圆的面积和周长
		double r = 4*Math.random();
		//Math.pow(r,2)求半径r的平方
		double area = Math.PI*Math.pow(r,2);
		double circle = 2*Math.PI*r;
		System.out.println("半径为:" +r);
		System.out.println("面积为:" +area);
		System.out.println("周长为:" +circle);
		//如果面积大于等于周长,则输出“面积大于等于周长”,否则,输出周长大于面积
		if(area >= circle) {
			System.out.println("面积大于等于周长");
		}else {
			System.out.println("周长大于面积");
		}
	}
}

 

if else if else多选择结构

语法结构:

if(布尔表达式1) {

语句块1;

} else if(布尔表达式2) {

语句块2;

}……

else if(布尔表达式n){

    语句块n;

} else {

    语句块n+1;

}

流程:

  当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则,继续判断布尔表达式3······;如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分。

实例:

package cn.xjion.pro02;
/**
 * 测试多选择结构
 * @author xjion
 *
 */
public class TestIfElseIfElse {
	public static void main(String[] args) {
//		产生一个随机年龄
		int age = (int)(100*Math.random());
		System.out.println("年龄是:"+age+"属于");
//		利用多选择结构来判断并打印
		if(age<12) {
			System.out.println("儿童,喜欢玩!");
		}else if(age<18) {
			System.out.println("青年,要学习!");
		}else if(age<40) {
			System.out.println("中年,要工作!");
		}else if(age<65) {
			System.out.println("中老年,要养生!");
		}else if(age<85) {
			System.out.println("老年,多运动!");
		}else {
			System.out.println("老寿星,古来稀!");
		}
	}
}

 

switch分支结构

语法结构:

switch (表达式) {

case 值1: 

语句序列1;

[break];

case 值2:

    语句序列2;

[break];

     … … …      … …

[default:

 默认语句;]

}

流程:

   switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果表达式的值与任一case值不匹配,则进入default语句(如果存在default语句的情况)。

实例:

package cn.xjion.pro02;
/**
 * 测试switch语句
 * @author xjion
 *
 */
public class TestSwitch {
	public static void main(String[] args) {
		char c = 'a';
		int rand = (int)(26*Math.random());
		char c2 = (char)(c+rand);
		System.out.println(c2+":");
		switch(c2) {
		case 'a':
		case 'e':
		case 'i':
		case 'o':
		case 'u':
			System.out.println("元音");
			break;
		case 'y':
		case 'w':
			System.out.println("半元音");
			break;
		default:
			System.out.println("辅音");
		}
	}
}

 二、循环结构

循环结构分两大类:一类是当型,一类是直到型。

 当型:

      当布尔表达式条件为true时,反复执行某语句,当布尔表达式的值为false时才停止循环,比如:while与for循环。

 直到型:

      先执行某语句, 再判断布尔表达式,如果为true,再执行某语句,如此反复,直到布尔表达式条件为false时才停止循环,比如do-while循环。

while循环

语法结构

while (布尔表达式) {

    循环体;

}

流程:

在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。语句中应有使循环结束的语句,否则会出现无限循环–––"死"循环。

实例:

package cn.xjion.pro02;
/**
 * 测试while循环,1到100累加和
 * @author xjion
 *
 */
public class TestWhile {
	public static void main(String[] args) {
//		定义一个变量为0,一个累加和为0
		int i = 0;
		int sum = 0;
//		while循环,当i小于等于100时就执行sum += i,i++,否则就跳出循环
		while(i<=100){
			sum += i;
			i++;
		}
//		打印和,5050
		System.out.println(sum);
	}
}

do-while循环

语法结构

do{

     循环体

}

while (布尔表达式) ;

流程:

 do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。do-while循环的循环体至少执行一次。

实例:

package cn.xjion.pro02;
/**
 * 测试do-while循环,1到100累加和
 * @author xjion
 *
 */
public class TestDoWhile {
	public static void main(String[] args) {
//		定义一个变量为0,一个累加和为0
		int i = 0;
		int sum = 0;
//		do while循环,当i小于等于100时就执行do的语句,否则就跳出循环
		do{
			sum += i;
			i++;
		}
		while(i<=100);
//		打印和,5050
		System.out.println(sum);
	}
}

for循环

语法结构

for (初始表达式; 布尔表达式; 迭代因子) {

      循环体;

}

流程:

 for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。

实例:

package cn.xjion.pro02;
/**
 * 测试for循环,1到100累加和
 * @author xjion
 *
 */
public class TestFor {
	public static void main(String[] args) {
//		定义一个累加和为0
		int sum = 0;
//		for循环,当i小于等于100执行语句块
		for (int i = 0; i <= 100; i++) {
			sum += i;
		}
//		打印和,5050
		System.out.println(sum);
	}
}

逗号运算符

package cn.xjion.pro02;
/**
 * 测试逗号for循环,1到100累加和
 * @author xjion
 *
 */
public class TestdhFor {
	public static void main(String[] args) {
//		定义一个累加和为0
		int sum = 0;
//		for循环,当i小于等于100执行语句块
		for (int i = 0; i <= 100; sum += i,i++) {
		}
//		打印和,5050
		System.out.println(sum);
	}
}

嵌套循环

在一个循环语句内部再嵌套一个或多个循环,称为嵌套循环。while、do-while与for循环可以任意嵌套多层。

实例:

package cn.xjion.pro02;
/**
 * 测试嵌套循环
 * @author xjion
 *
1	1	1	1	1	1	1	1	1	
2	2	2	2	2	2	2	2	2	
3	3	3	3	3	3	3	3	3	
4	4	4	4	4	4	4	4	4	
5	5	5	5	5	5	5	5	5	
6	6	6	6	6	6	6	6	6	
7	7	7	7	7	7	7	7	7	
8	8	8	8	8	8	8	8	8	
9	9	9	9	9	9	9	9	9	

 */
public class TestNestLoop {
	public static void main(String[] args) {
//		外层控制行
		for (int i = 1; i < 10; i++) {
//			内层控制列
			for (int j = 1; j < 10; j++) {
//				print打印不换行的结果i,\t 制表符
				System.out.print(i+"\t");
			}
//			打印换行
			System.out.println();
		}
	}
}

九九乘法表

package cn.xjion.pro02;
/**
 * 测试九九乘法表
 * @author xjion
 *
 */
public class MultiplicationTable {
	public static void main(String[] args) {
//		外层循环控制行
		for (int i = 1; i < 10; i++) {
//			内层循环控制列,只打印j小于等于i的那一部分
			for (int j = 1; j <= i; j++) {
//				打印
				System.out.print(j+"*"+i+"="+j*i+"\t");
			}
//			换行
			System.out.println();
		}
	}
}

到这各位还可以试下单循环打印for循环,一个for。

package cn.xjion.pro02;
/**
 * 测试九九乘法表
 * @author xjion
 *
 */
public class DMultiplicationTable {
	public static void main(String[] args) {
//		循环当i=1时,j<10时的结果
		for(int i=1,j=1;j<10;i++){
//			打印
			System.out.print(i+"*"+j+"="+i*j+"\t");
//			判断i与j是否相等,就是乘法表的斜线
			if(i==j){
//				相等时,i归0,j+1,换行
				i=0;
				j++;
				System.out.println();
			}
		}
	}
}

break语句和continue语句

break

在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。

 

package cn.xjion.pro02;
/**
 * 测试break
 * @author xjion
 *
 */
public class TestBreak {
	public static void main(String[] args) {
//	死循环
		while(true){
//			产生随机数
			int num = (int)(Math.random()*100)+1;
//			打印
			System.out.println(num);
//			当num==88,break跳出循环
			if(num == 88){
				break;
			}
		}
		
	}
}

continue

package cn.xjion.pro02;
/**
 * 测试continue语句,打印100到150不能被3整除的数,每5个换一行
 * @author xjion
 *
 */
public class TestContinue {
	public static void main(String[] args) {
//		time记打印次数
		int time = 0;
//		循环100-150
		for (int i = 100; i <= 150; i++) {
//			如果i除以3余数为0就continue,跳过本次循环
			if (i % 3 == 0) {
				continue;
			}
//			每打印一次time次数就+1
			System.out.print(i+"\t");
			time++;
//			如果次数除以5等于0,就换行
			if (time % 5 == 0) {
				System.out.println();
			}
		}
	}
}

带标签的continue和break语句

类似于goto语句

package cn.xjion.pro02;
/**
 * 测试带标签的continue和break语句
 * @author xjion
 *
 */
public class TestConBreak {
	public static void main(String[] args) {
		//打印100-150之间的所有质数
				outer:for(int i=100;i<150;i++) {
					for(int j=2;j<i/2;j++) {
//						当这个数为质数时跳转到outer
						if(i%j==0) {
							continue outer;
						}
					}
					System.out.println(i);
				}

	}
}

三、方法

https://blog.youkuaiyun.com/weixin_44077840/article/details/89675968

这里面我有详细的介绍有关方法及方法重载的内容。直接点击查看就行了

https://blog.youkuaiyun.com/weixin_44077840/article/details/89681842

这里面我有详细的介绍有关递归的内容。直接点击查看就行了

本章节的内容就到这里了,如有不妥欢迎大佬指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值