java(九)中的循环结构

生活的循环

df067766cf1a4f66bc7ac50b4f484dad.png

我们在400米的跑道上参加万米长跑,正常情况下要跑25圈,这25圈每一圈的跑步过程其实都是一样的,相当于是我们重复地转了25圈。跑完第25圈时,我们就会结束长跑,当然你也可以提前结束长跑。

所以循环其实就是重复地完成某一件事情或者某一个操作,且该操作有开始和结束。我们在执行循环时,需要满足一定的循环条,反复执行特定的代码,当条件被打破时就要结束循环。比如我们可以循环播放音乐、循环计算1000个学生的成绩等。

Java中循环能解决一个什么问题呢

比如我要输出System.out.println("我要好好学习"); 一行很容易

我现在要输出 73行怎么办.

比如我要输出1-112个数字,怎么输出.

JAVA中的循环分为三种

8cebd2f3f07648f381d7486fbfcbabaa.png

while

当什么什么,初始化语句,循环条件,循环操作

1e3cb2ecd42345959fc3a18d65ff0c26.png

使用while循环解决1~112的输出

int i= 1;
while (i<= 112) {
    System.out.println("i= " + i);
i++;
 System.out.println("执行完i++后的值"+i);
}

例子

int i = 1;
while(i<=5){
    System.out.println("好好学习"+i);
i++;
    System.out.println("执行完i++后的值"+i);
}

注意一定要使用i++ 自增语句,如果不加就变成了死循环

练习使用while语句输出周1,周2,周3,周4,周5

int i = 1;
while(i<=5){
    System.out.println("周"+i);i++;
}

练习使用while语句输出1加到100的和

int i = 1;int sum = 0;
while(i<=100){
    sum+=i; i++;
}
System.out.println(sum);

练习3、猜数字游戏:随机生成一个100以内的数,猜这个随机数是多少?从键盘输入数,如果大了,提示大了;如果小了,提示小了;如果对了,就不再猜了,并统计一共猜了多少次。

{
        Scanner scanner = new Scanner(System.in);
        //获取一个随机数
        int random = (int) (Math.random() * 100) + 1;
        System.out.println("猜一下,看你几次可以猜到!!!");
        int cnt = 0;
        while (true) {
            System.out.println("请输入你的答案:");
            int pwd = scanner.nextInt();
            if (pwd > random) {
                System.out.println(pwd + "? 大了...");
                cnt++;
            } else if (pwd < random) {
                System.out.println(pwd + "? 小了...");
                cnt++;
            } else if (pwd == random) {
                cnt++;
                System.out.println(pwd + " , 恭喜你,答对了,一共猜了 " + cnt + " 次,还不错!!");
                break;
                //return;
            }
        }
    }

练习4、 世界最高山峰是珠穆朗玛峰,它的高度是8848.86米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

      int l = 884886, cnt = 0;
        double paper = 0.1;//单位:毫米
        while (l > paper) {
            cnt++;
            paper *= 2;
        }
        System.out.println("需要折叠:" + cnt + "次");
        System.out.println("折纸的高度为" + paper / 1000 + "米,超过了珠峰的高度");

do while

a316e0296a2c46628a5125fed398fdf2.png

int i= 3000;
do{
    System.out.println("你好");
}while(i<-1);

do while很少用 应用场景就是抢票,一般用于先做,后判断的场景ef93d1ea405e43f38ff08d2e857a30ed.png

注意//抢票软件,如果把while放到前边 判断是否抢到票消耗时间此时票早抢完了

死循环 while(true) while(1==1)

for

for (初始化表达式; 循环条件; 操作表达式) {

    // 循环体中的语句

}

上面这个语法语句中for关键字后面包括了三个内容,初始化表达式、循环条件、操作表达式,它们用分号(;)分隔,在大括号里面有个执行语句为循环体。这个for循环语句是怎么执行的呢?

分4步走:

第一步:首先执行的是初始化表达式;

第二步:执行循环条件,看判断条件满不满足,如果满足条件,执行循环体中的的语句,如果当条件不满足,就退出for循环 ;

for (初始化表达式; 循环条件; 操作表达式) {

    // 循环体中的语句

}

第三步:执行操作表达式,然后重复执行第二步 ;

for的快捷键fori

for(int i=1;i<=5;i++){
    System.out.println("好好学习"+i);
}

练习1加到100的和用for语句

int sum = 0;
for(int i=1;i<=100;i++){
      sum+=i;
}
System.out.println(sum);

 for倒计时应用

9524c296441e4314921df7d464b2bb93.png

for(int i=400;i>0;i--){
            System.out.println(i+"秒");
            Thread.sleep(1000l);
 }

 练习:求1-10之间的奇数和偶数和

  int jishusum = 0;
        int oshusum=0;
        for (int i = 1; i <=10; i++) {
            if(i%2==1){
                jishusum+=i;
            }else{
                oshusum+=i;
            }
        }
        System.out.println(jishusum+"%$"+oshusum);

        /*for (int i = 1; i <=10; i+=2) {
                jishusum+=i;
        }*/

打印九九乘法表

 for (int a = 1; a <= 9; a++) {
            for (int b = 1; b <= a; b++) {
                System.out.printf("%d * %d = %2d  ", a, b, a * b);
            }
            System.out.println();
        }

for(;;){ System.out.println("死循环"); }

for(;true;){ System.out.println("死循环"); }

循环嵌套的例子

public class Test11{
	/**	
		知识点:for循环嵌套
		
		需求1:打印以下图形
			****
			****
			****
			for(int i = 0;i<3;i++){
				for(int j = 0;j<4;j++){
					System.out.print("*");
				}
				System.out.println();
			}
			
		需求2:打印以下图形
			*
			**
			***
			****
			*****
			for(int i=0;i<5;i++){
				for(int j=0;j<=i;j++){
					System.out.print("*");
				}
				System.out.println();
			}

		需求3:打印以下图形
			    *
			   **
			  ***
			 ****
			*****
			for(int i=0;i<5;i++){
				for(int k=0;k<4-i;k++){
					System.out.print(" ");
				}
				for(int j=0;j<=i;j++){
					System.out.print("*");
				}
				System.out.println();
			}

		需求4:打印以下图形
			*****
			****
			***
			**
			*
			for(int i=0;i<5;i++){
			
				for(int j=0;j<5-i;j++){
					System.out.print("*");
				}
				System.out.println();
			}

		需求5:打印以下图形
			*****
			 ****
			  ***
			   **
			    *
			for(int i=0;i<5;i++){
				for(int k=0;k<i;k++){
					System.out.print(" ");
				}
				for(int j=0;j<5-i;j++){
					System.out.print("*");
				}
				System.out.println();
		  	  }

		需求6:打印以下图形
			   *
			  ***
			 *****
			*******
			for(int i=0;i<4;i++){
				for(int k=0;k<3-i;k++){
					System.out.print(" ");
				}
				for(int j=0;j<2*i+1;j++){
					System.out.print("*");
				}
				System.out.println();
			}

		需求7:打印以下图形
			   *
			  * *
			 *   *
			*******
			for(int i=0;i<4;i++){
				for(int k=0;k<3-i;k++){
					System.out.print(" ");
				}
				for(int j=0;j<2*i+1;j++){
					//第一行 || 最后一行 || 每行的第一列 || 每行最后一列 打印星号
					if(i==0 || i==3 || j==0 || j==2*i){
						System.out.print("*");
					}else{
						System.out.print(" ");
					}
				}
				System.out.println();
			}

		需求8:打印以下图形
			*******
			 *****
			  ***
			   *
			for(int i=0;i<4;i++){
				for(int k=0;k<i;k++){
					System.out.print(" ");
				}
				for(int j=0;j<7-2*i;j++){
					System.out.print("*");	
				}
				System.out.println();
			}

		需求9:打印以下图形
			*******
			 *   *
			  * *
			   *
			for(int i=0;i<4;i++){
				for(int k=0;k<i;k++){
					System.out.print(" ");
				}
				for(int j=0;j<7-2*i;j++){
					if(i == 0 || i==3 || j==0 || j==2*(3-i)){
						System.out.print("*");
					}else{
						System.out.print(" ");
					}
						
				}
				System.out.println();
			}
         打印乘法口诀表
		方案一:
		for(int i=1;i<=9;i++){
			for(int j=1;j<=i;j++){
				System.out.print(j + "*" + i + "=" + j*i + "\t");
			}
			System.out.println();
		}
		方案二:
		for(int i=1;i<=9;i++){
			for(int k = 1;k<i;k++){
				System.out.print("\t");
			}
			
			for(int j=i;j<=9;j++){
				System.out.print(i + "*" + j + "=" + j*i + "\t");
			}
			System.out.println();
		}

	*/
	public static void main(String[] args){

	}
}

冒泡排序算法的例子

public static void main(String[] args) {
    int[] arr = new int[]{5,7,4,3,6,2};
    bubbleSort(arr);
    System.out.println("冒泡排序完的数组:"+Arrays.toString(arr));

}

public static void bubbleSort(int[] arr) {
    int n = arr.length;
    //外部循环控制排序的趟数。冒泡排序的每一趟会将最大的元素"冒泡"到数组的末尾,因此需要执行 n-1 趟,其中 n 是元素的总数
    for (int i = 0; i < n - 1; i++) {
        //内循环控制每趟比较的次数。由于每一趟都会将一个最大的元素沉到数组末尾,所以内循环次数逐渐减小。
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换arr[j]和arr[j+1]
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
        System.out.println("第"+(i+1)+"趟:"+Arrays.toString(arr));
    }
}

Break;

3000米赛跑,跑到第5圈的时候忽然肚子疼要退出比赛。

for (int i = 1; i < 100; i++) {
    if(i==5){
        System.out.println("我肚子疼先退出");
        break;
    }
    System.out.println("跑了第"+i+"圈");
}

java中的应用场景:

1.1000个数据里要找一个数,正好在第599个位置找到,后面就不需要执行了。用break

break用于程序跳出 在循环语句中break关键字用于跳出当前循环,在switch语句中也用于跳出。它通常用于终止循环,或者跳出不需要执行的分支。

例如,当我们在循环中找到了想要的结果,就可以用break语句结束循环,避免不必要的计算。

或者,当我们在switch语句中匹配到了对应的case,就可以用break语句跳出switch语句,避免执行其他case。

//练习for 循环  数字1-7代表周一到周日,总共7天,当i=6时 输出休息,程序退出,1-5输出上课

for (int i = 1; i < =12; i++) {
    if(i==6){
        System.out.println("休息");
        break;
    }
    System.out.println("上课");
}

continue

上课45分钟,第10分钟的时候肚子疼,要出去解决,解决完成后回来继续上课

Java 中的continue关键字用于跳过本次循环要执行的剩余语句开始执行下一次循环。它通常用于忽略某些不符合条件的情况,或者提前结束本次循环。

例如,当我们在循环中遇到了某些无效的数据,就可以用continue语句跳过本次循环,继续处理下一个数据。

或者,当我们在循环中已经完成了本次循环的主要任务,就可以用continue语句提前结束本次循环,节省时间。

for (int i = 1; i <=45 ; i++) {
    if(i==10){
        System.out.println("我去上厕所了,第"+i+"分钟的课我不能上");
        continue;
    }
    System.out.println("我在上课,第"+i+"分钟");
}

 //练习for 循环continue语句 数字1-12代表1-12个月,当i=1,2,7, 8时输出放假,其他月输出上学

for (int i = 1; i <=12 ; i++) {
    if(i==1||i==2||i==7||i==8){
        System.out.println("放假"+i);
        continue;
    }
    System.out.println("上学"+i);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫1981

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值