Java基础-Day04

Java基础-Day04

For循环

  • 循环结构的4个要素:

    ①初始化条件

    ②循环条件----->只能是Boolean类型

    ③循环体

    ④迭代条件

  • 循环结构

    for(①;②;④){

    }

    执行过程:① - >② - >③ - >④ - >② - >③ - >④ -> ... -> ②

/*
输入两个正整数(m,n),求其最大公约数和最小公倍数
*/

import java.util.Scanner;

class ForTest2{
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入正整数m:");
		int m = scan.nextInt();
		
		System.out.println("请输入正整数n:");
		int n = scan.nextInt();
		
		//最大公约数:
		//1.获取两个数中较小的值
		int min = (m <= n) ? m : n;
		//2.遍历
		for(int i = min;i >= 1;i--){
			if(m % i == 0 && n % i == 0){
				System.out.println("最大公约数为:" + i);
				break;//跳出循环
			}
			
		}
		
		//获取最小公倍数
		//1.获取两个数中的较大值
		int max = (m >= n) ? m : n;
		for (int i = max; i <= m * n; i++){
			if(i % m == 0 && i % n == 0){
				System.out.println("最小公倍数:" + i);
				break;
			}
		}
	}
}

While循环

  • 循环结构的4个要素:

    ①初始化条件

    ②循环条件----->只能是Boolean类型

    ③循环体

    ④迭代条件

  • 说明:

    1. 写while循环千万小心不要丢失迭代条件,一旦丢失,就可能造成死循环
    2. 我们写程序,要避免出现死循环
    3. for循环和while循环是可以相互转换的
      • 区别:for循环和while循环的初始化条件的作用域不同
  • 循环结构

    while(②){

    ​ ③;

    ​ ④;

    }

    执行过程:① - ② - ③ -④ -② - ③ -④ - ... - ②

    class WhileTest{
    	public static void main(String[] args){
    		//遍历100以内所有偶数
    		int = 1;
    		while(i <= 100){
    			if(i % 2 == 0){
    				System.out.println(i)
    			}
              	i++;
    		}
    	}
    }
    

DoWhile循环

  • 循环结构的4个要素:

    ①初始化条件

    ②循环条件----->只能是Boolean类型

    ③循环体

    ④迭代条件

  • do - while循环结构:

    do{

    ​ ③;

    ​ ④;

    }while(②);

    执行过程:① - ③ - ④ - ② - ③ - ④ - ... - ②

    说明:

    ​ 1.do-while循环至少会执行一次循环体!

    ​ 2.开发中,使用for和while循环更多一些。

class DoWhileTest{
	public static void main(String[] args){
		//遍历100以内所有偶数
		int = 1;
		do{
			if(i % 2 == 0){
				System.out.println(i)
			}
          	i++;
		}while(i <= 100)
	}
}

嵌套循环

  • 将一个循环放在另一个循环内,就形成了嵌套循环,for,while,do...while均可作为外层循环或内层循环
class BreakContinueTest{
	public static void main(String[] agrs){
		label:for(int i =1;i <= 4;i++){
			for(int j = 1; j <= 10;j++){
				if(j % 4 == 0){
					//break;//推出当前循环
					//continue;//默认跳出包裹此关键字最近的一层循环
					break label;//推出指定标识的for循环,continue也适用
					
				}
				System.out.print(j);
			}
			System.out.println();
		}
	}
}
class WhileTest1{
	public static void main(String[] args){
		for(int i = 1;i <= 9;i++){
			for(int j = 1;j <= i; j++){
				System.out.print(i + "*" + j + "=" + i*j + " ");
			}
			System.out.println();
		}
	}
}
//常见考题
//取正整数100内的质数(也称素数)
class WhileTest1{
	public static void main(String[] args){
		boolean isFlag = true;//写在外部内存占的少
      	int count = 0;//计算质数的个数
      	//获取当前时间距离1970-01-01 00:00:00 的毫秒数
      	long start = System.currentTimeMillis();
		for(int i = 2;i <= 100000;i++){
          	//优化二:对本身是质数的自然数是有效的
			for(int j = 2;j <= Math.sqrt(i);j++){
				if(i % j == 0){
					isFlag = false;
                  	break;//优化一:只对本身非质数的自然数是有效的
				}
			}
			if(isFlag){
				//System.out.println(i);
                count++;
			}
			//重置isFlag
			isFlag = true;
		}
      
      	long end = System.currentTimeMillis();
      	System.out.println("质数的个数:" + count);
        System.out.println("计算所花的时间为:" + (end - start));
	}
}
posted @ 2023-06-27 16:50  Clayborne  阅读(18)  评论(0)    收藏  举报