Day11 循环结构

循环结构

while循环

//语法
while(布尔表达式){
    //即布尔表达式成立,则一直循环括号内容
}
  • 大多数情况下需要让循环停止下来,需要一个让表达式失效的方式来结束循环;
  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等
  • 若出现无限循环(又称为死循环),会影响程序性能或者造成程序卡死崩溃!

1-100相加实例

import java.util.Scanner;

public class DemoWhile01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a=scanner.nextInt();//用于输入连加多少位的数
        int b=1;
        int c=0;
        while (b<=a){
            c=c+b;
            b++;
        }
        System.out.println(c);
        scanner.close();
    }
}

do...while循环

//语法
do {
    //代码语句
}while(布尔表达式)
  • While和do-While的区别

    1.while是先判断后执行;do-while是先执行后判断

    2.do-while即使不满足条件,也至少会循环一次

For循环

//语法
for(初始化;布尔表达式;更新){
    //代码语句
}

优势:

  • 支持迭代的一种通用结构
  • for循环执行的次数是在执行前就已经确定

题目一:0-100奇数和偶数的和

  • 题目要求是在一组编程代码里完成
import java.util.Scanner;

public class DemoFor02 {
    public static void main(String[] args) {
        int evensum=0;
        int oddsum=0;
        Scanner scanner = new Scanner(System.in);
        int q=scanner.nextInt();//获得范围最大值
        for (int a=1;a<=q;a++){
            if (a%2!=0){//奇数
                evensum=evensum+a;
            }else{
                oddsum=oddsum+a;
            }
        }
        System.out.println(evensum);
        System.out.println(oddsum);
        scanner.close();
    }
}
//自做的垃圾
import java.util.Scanner;

public class DemoWhile02 {
    public static void main(String[] args) {
        int a;
        int sum=0;
        Scanner scanner = new Scanner(System.in);
        int t=scanner.nextInt();//最大值
        for (a=1;a<t;a=a+2){//将a的初始值改为0或2;<=t;
            sum = sum+a;
        }
        System.out.println(sum);
        scanner.close();
    }
}//2500

题目二:1-1000里能被5整除的数,并每行输出三个

//自写废物答案:无换行
import java.util.Scanner;

public class DemoFor01 {
    public static void main(String[] args) {
        int a;
        Scanner scanner = new Scanner(System.in);
        int t=scanner.nextInt();
        for (a=1;a*5<=t;a++) {
            int b=a*5;
            if (b<= t) {
                System.out.println(b);
            }
        }//自己做的
        //这个思路是反过来,用乘以5来得出结果
import java.util.Scanner;

public class DemoFor03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int q=scanner.nextInt();//范围最大值
        for (int a=1;a<=q;a++){
            if (a%5==0){
                System.out.print(a+"\t");//print:不会换行;\t:表示空格
            }
            if (a%(5*3)==0){
                System.out.println("\n");//表示每到第三个,就输出一次换行
            }
        }
        scanner.close();
    }
}
  • print()表示不会换行
  • println()表示会换行

题目三:打印九九乘法表(嵌套For循环)

public class DemoFor04 {
    public static void main(String[] args) {
        for (int a=1;a<=9;a++){
            for (int b=1;b<=a;b++){
                System.out.print(b+"*"+a+"="+(b*a)+"\t");//表示输出一行
            }
            System.out.println();
        }
    }
}//代码里,按行思想输出,再到列思想换行

举例搞懂:当a自增到6时,嵌套内循环b开始从1到6

增强For循环

  • 主要用于数组或集合
//语法
for(声明语句:表达式){
    //代码句子
}
public class DemoFor05 {
    public static void main(String[] args) {
        int[] number={10,15,70,44,14};//定义出一个数组
        for(int a:number){
            System.out.println(a);//从数组中循环取用数字
        }
    }
}
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法
posted @ 2021-09-24 21:31  Hacker-红烧肉  阅读(38)  评论(0)    收藏  举报