Java基础

137 阅读1分钟

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。

循环结构

循环结构的4个要素:

​ 一初始化条件

​ 二循环条件(boolean类型)

​ 三循环体

​ 四迭代条件

循环嵌套:内层循环遍历一遍相当于外层循环执行一次

​ 技巧:外层循环控制行数,内层循环控制列数

break

break用于跳出循环和switch—case结构

for循环
for(一,二,四){
	三
}
//练习
int num=1;
for(System.out.print('a');num<=3;System.out.print('b'),num++){//i在for循环内有效,出了for循环无效
    System.out.print('c')
}//结果abcbcbc
//注意:输出语句是print不是println不需要换行
例题一(循环输出1到150)
/**
 * 编写程序从1循环到150,并在每行打印一个值,另
 * 外在每个3的倍数行上打印出“ foo",
 * 在每个5的倍数行上打印“biz",
 * 在每个7的倍数行上打印输出“baz”。
 */
public class ForText {
    public static void main(String[] args){
        for(int i=1;i<=150;i++){
            System.out.print(i);
            if(i%3==0)
                System.out.print(" foo");
            if(i%5==0)
                System.out.print(" biz");
            if(i%7==0)
                System.out.print(" baz");
            System.out.println();
        }
    }
}
例题二(最大公约数、最小公倍数)
import java.util.Scanner;
/**
 * 输入两个正整数m,n求其最大公约数和最小公倍数
 */
public class ForText1 {
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        int m= scan.nextInt(),n= scan.nextInt();
        //最大公约数
        for(int i=m;i>=1;i--){
            if(m%i==0){
                if(n%i==0) {
                    System.out.println(i);
                    break;
                }
            }
        }
        //最小公倍数
        for(int i=m;i<=n*m;i++){
            if(i%m==0){//两个if可以合并成一个if(i%m==0&&i%n==0)
                if(i%n==0){
                    System.out.println(i);
                    break;
                }
            }
        }

    }
}
while循环
while(){//for循环和while循环可以相互转化
    //但for循环和while循环初始化条件的作用域不一样
}
do—while循环
do{//先执行,后判断,while是先判断,再执行
    //do---while 循环至少执行一次
}while;//注意有分号
循环例题
例题一(无线循环读取整数,并终止)

无线循环 while(true)或者for(;;)

import java.util.Scanner;
/**
 *从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
 */
public class EgFor {
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        while(true){//true可以写成其他只要恒为真即可,例如1==1
            int shuru= scan.nextInt();
            int zheng=0,fu=0;
            if(shuru>0)
                zheng++;
            else if(shuru<0)
                fu++;
            else
                break;
        }
        //上述while可以改成for
        for(;;){
            int shuru= scan.nextInt();
            int zheng=0,fu=0;
            if(shuru>0)
                zheng++;
            else if(shuru<0)
                fu++;
            else
                break;
        }
        //另一种方法
        int i;
        while((i=scan.nextInt())!=0){
            int zheng=0,fu=0;
            if(i>0)
                zheng++;
            else if(i<0)
                fu++;
        }
    }
}
例题二(因子相加)
/**
 * 一个数如果恰好等于它的因子之和,这个数就称为"完数"。
 * 例如6=1十2+3程找出1000以内的所有完数。
 * (因子:除去这个数本身的其它约数)I
 */
public class WanNumber {
    public static void main(String[] args){
        for(int i=3;i<=1000;i++){
            int sum=0;
            for(int j=1;j<i;j++){//注意:因为不能有它本身,所以不能有等号
                if(i%j==0){
                    sum+=j;
                }
            }
            if(sum==i)
                System.out.println(i);
        }
    }
}

特殊关键字的使用(break、continue)

使用范围作用
breakswitch—case
循环结构中
跳过
结束当前循环
continue循环结构中结束当次循环(1次)

**break、continue后面不能声明执行语句,否则编译都过不去,注意:循环外不俗哎后面,算外面 **

break、continue结束指定循环
public class BreakText {
    public static void main(String[] args){
        for(int i=1;i<=4;i++){
            for(int j=1;j<=4;j++){
                if(j%4==0)
                    break;//break 默认结束最近的一个for循环
            }
        }
        //想要用break结束指定的for循环
        lab:for(int i=1;i<=4;i++){//lab是标识符,自己定义
            for(int j=1;j<=4;j++){
                if(j%4==0)
                    //break lab;//break 结束指定的for循环(给for加上标识,再break后加上标识)
                    continue lab;//结束指定循环的当次循环
            }
        }
    }
}
return

结束当前方法(相当于结束C中的函数)