【JavaSE】-4-单层循环结构

回顾

运算符:

算术 ++ --、逻辑 && & || |、比较 ==、三元 、赋值 =

int i = 1;
i++;
j = i++; //j=2 i=3
syso(--j+"-----"+i++)  //1  3 

选择结构

if(){

}
if(){

}else{

}
if(){

}else if(){

}else if(){

}else{

}
//支持byte、short、int 
//支持char
//支持枚举
//从jdk8开始 支持String字符串类型
switch(表达式){
	
}

循环结构

循环目的:实现某一块代码多次重复执行。

for循环

for(表达式一;表达式二;表达式三){
	//循环体
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

示例:

/*
		 * 需求:在控制台打印出所有的水仙花数。
		 * 水仙花数: 是一个三位数,
		 * 水仙花数的个位、十位、百位数字的立方之和等于原数。
		 */
		for(int i=100;i<1000;i++) {
    
    
			int g = i%10; 
			int b = i/100;//121
			int s = i/10%10;
			if(g*g*g + b*b*b + s*s*s == i) {
    
    
				System.out.print(i+"  ");
			}		
		}
/*
		 * 1. 需求:数7游戏。从1到100(不含100), 
		 * 如果数是7的倍数或者包含7输出“过”,否则输出数字本身。
		 */
		for(int i=1;i<100;i++) {
    
     //65
			//7的倍数 i%7==0
			//包含7  个位i%10==7    十位i/10==7
			if(i%7==0 || i%10==7 || i/10==7) {
    
    
				System.out.print("过 ");
			}else {
    
    
				System.out.print(i+" ");
			}
		}

for循环变形及死循环

for(表达式1;表达式2;表达式3){
	循环体
}

代码:

	public static void main(String[] args) {
    
    
		for( ; ; ) {
    
    
			System.out.println("hello world");
		}
		System.out.println("end");//这行代码永远执行不到
	}

上面的示例,没有任何语句控制循环的结束。所以会无限打印hello world,导致循环后面的代码永远执行不到。

注意:如果程序中出现死循环,Eclipse会报错,不允许你执行。

代码:

	public static void main(String[] args) {
    
    
		for(int i = 0 ; i != 10 ; i += 3 ) {
    
    
			System.out.println("hello world");
		}
		System.out.println("end");//这行代码永远执行不到
	}

上面的示例,虽然表达式完整,但是 i != 10会永远为真,因此也是一个死循环。导致for循环后面的代码无法执行

代码:

//		int i ;
//		for(i=1;;) {
    
    
//			
//		}
		
//		int i = 1;
//		for(;;) {
    
    
//			System.out.println(i);
//		}
		
//		for(int i = 1;i < 10;i--) {
    
    
//			System.out.println(i);
//		}

	int i = 1;
	for(;i < 10;) {
    
      //不会发生死循环
		System.out.println(i++);
	}

while循环

do…while循环

Random随机数

random.nextInt(3); // 得到的是一个 [0,3)的数值

随机数的规律:要想产生一个[min, max]之间的随机数。

int num = random.nextInt(max - min + 1) + min;

随机数的规律:要想产生一个[min, max) 之间的随机数。

int num = random.nextInt(max - min) + min;

随机数范围

[0,10]
[0,10)
[10,15]
(10,15]
Random r = new Random();
		//生成boolean类型随机数
		boolean flag = r.nextBoolean();
		//生成int范围的随机数
		int num1 = r.nextInt();
		//生成double类型的随机数
		double d1 = r.nextDouble();
		
		//指定范围 0<=num<3
		int num2 = r.nextInt(3);//[0,3)
		//生成一个随机数  0<=num<=3
		int num3 = r.nextInt(4);
		
		
		//生成一个随机数  5<=num<10  //5  [0-5)
		//r.nextInt(10-5)+5  r.nextInt(max-min)+min
		int num5 = r.nextInt(5)+5;
		//生成一个[15-20)之间的随机数
//		for(int i=0;i<10;i++) {
    
    
//			int num6 = r.nextInt(20-15)+15;
//			System.out.println(num6);
//		}
		//生成一个[15-20]之间的随机数 r.nextInt(max-min+1)+min
		for(int i=0;i<10;i++) {
    
    
			System.out.print(r.nextInt(20-15+1)+15+"  ");
		}

示例:

//产生5个[10, 80]之间的随机数,输出产生的数,并求出最大的随机数。
//记录最大值出现的下标(第一次循环 ,下标为0,第二次为1....) 
Random r = new Random();
//最大值出现的索引下标
int maxIndex = 0;
int max = 0;
int min = 80;
int sum = 0;
for(int i=0;i<5;i++) {
    
    
    int num = r.nextInt(71)+10;
    System.out.print(num+" ");
    maxIndex = (num>max) ? i : maxIndex;
    max = num>max ? num : max;
    min = num<min ? num : min;
    sum += num;
}
System.out.println("最大值是:"+max +" 最小值是:"+min +" 总和:"+sum);
System.out.println("最大值的索引下标是:"+maxIndex);

猜你喜欢

转载自blog.csdn.net/qq_64505944/article/details/134559815