Math中的相关操作

随机数

Java中除了可以直接导入Random类,获取随机数,还可以通过本身自带的Math方法去获取随机数。Math.random()可以产生随机小数,区间范围为[0.0,1)。如下图:

double num=Math.random();
System.out.println(num);//输出一个0-1之间的随机小数

假设想要有一个区间为[3.6]之间的随机整数,如下:

/*1.原区间为[0,1)->[3,6]区间,可以先把[3,6]转化为[3,7)
2.原区间的距离是1,新区间的范围则是(6+1)-3,是原来的4倍
3.原区间是从0开始,新区间是从3开始
综合以上,可以得到一个公式:Math.random()*(max+1-min)+min
*/
//以下 先取区间的小数,在利用强类型转换,取整
int i=(int)(Math.random()*(6+1-3)+3);
System.out.println(i);

其他类

Math.round(数字) 四舍五入
Math.max(值1,值2) 求最大值
Math.min(值1,值2) 求最小值

System.out.println(Math.round(2.7));//3
System.out.println(Math.round(2.76));//3
System.out.println(Math.round(2.26));//3
System.out.println(Math.min(3.2,5));//3.2
System.out.println(Math.max(5,3.5));//5.0

循环体

Java中有些代码需要重复执行,可以使用循环语句。

For循环

语法结构:


/*for(初始化条件;判断条件;迭代因子){

				循环体;		
}

初始化条件:声明一个初始变量并赋值。

判断条件:判断当前是否能够继续执行的条件,该判断条件是表达式值为boolean。当值为ture继续执行,否则跳出该循环。

迭代因子:每次参与变化的因子,可以是初始变量。

执行流程如下:

1.初始化条件,对初始变量进行声明并赋值。

2.进入到判断条件,判断是否满足要求,满足则执行否则跳出循环。

3.当满足要求时,进入循环体

4.循环体结束之后,在执行迭代因子(更改初始变量)

5.迭代因子执行之后,从第2步开始重新执行。

**注意:**在循环体中,可以任意使用初始变量;

当循环体语句只有一句话的时候,前后的{}可以省略

//打印 50~100之间的数字
int sum=0; //求和
//执行顺序为 i=50 -> i<=50 -> 输出i的值
//-> sum+=50 -> i++ ->i=51
for(int i=50;i<=100;i++){ 
	System.out.println(i);
			sum+=i;
    
}
System.out.println(sum);

小常识:若是在CMD命令行无法结束程序,可以Ctrl+C结束程序。

while循环

while条件循环基本语法:

while(条件判断){
    语句块;
    条件变化;
}

while是先执行,在判断是否满足条件,满足条件在继续执行,不满足则退出循环。

int i=1;  
//条件初始化;  作用域在主方法中
while(i<=100){
	System.out.println(i);
		//i++; //条件变化
}

do_while循环

do_while语法结构如下:

do{
	循环体语句;
}while(条件判断);

示例:

int i=1; //条件初始化;  作用域在主方法中
do{
	System.out.println(i);
		//i++; //条件变化
}while(i<=100);//条件判断

注意:while与do_while之间的区别,while是先判断后执行,do_while是先执行后判断,所以do_while总是执行一遍。

以上三个循环都是可以相互转换的

break和continue

break
应用场景: switch 循环
作用: 终止,结束

//当打印1-10,并且当i=6时,跳出循环
for(int i=1;i<=10;i++){
	//当i=6时,退出整个循环
    if(i>5){
		break;
	}
}

continue
应用场景: 循环
作用: 结束本次循环,直接进入到下一次循环

//打印1~10之间的数字,遇到3或者3的倍数跳过
for(int i=1;i<=10;i++){
	if(i%3==0){
//当遇到取3的余数为0的时候,跳出本次循环    
	continue;
			  }
	System.out.println(i);
			
		}

循环嵌套

for(条件初始化;条件判断;条件变化){
	//代码
	for(条件初始化;条件判断;条件变化){
		//代码
		}
	//代码
}
/*利用循环嵌套,打印下图。
			* * * * *
			* * * * *
			* * * * *
			* * * * *
			* * * * *
由于控制台式从左网由输入,所以是先打一行的*,打完之后换行。所以,每次是先打印一行完整的*,再打印第二行,逐行打印。
*/
//外层循环i控制行  内层循环j控制列
for(int i=1;i<=5;i++){
	for(int j=1;j<=5;j++){
    //先打印行上的所有*
	System.out.print("* ");
	}
	//换行
	System.out.println();
}