JAVA 基本结构(二)

基本结构(二)

结构分类

  • 顺序结构:从上向下,依次执行
  • 选择结构:根据实际情况选择一条分支执行
  • 循环结构:在满足一定条件下,可以重复执行的语句

选择结构

分类

  • if语句:适用于范围性的判断
  • switch语句:适用于固定值的匹配

if语句

格式1

/*
if(布尔值的表达式){
    //要执行的语句
}
*/
//布尔表达式值为true。则执行;为false,不执行
//例:
import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int age=scanner.nextInt();
        if(age > 18){
            System.out.println("已成年");
        }
    }
}

格式2

/*
if(布尔值的表达式){
    //布尔表达式为true,要执行的语句
}else{
    //布尔表达式为false,要执行的语句
}
*/
//例:
import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int age=scanner.nextInt();
        if(age > 18){
            System.out.println("已成年");
        }else{
            System.out.println("未成年");
        }
    }

}

格式3

/*
if(布尔值表达式){
    //语句体1
}else if{
    //语句体2
}else{
    //语句体3
*/
//例:
import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入年龄:");
        int age=scanner.nextInt();
        if(age < 18){
            System.out.println("未成年");
        }else if(age >= 18 && age < 30){
            System.out.println("青年");
        }else if(age >= 30 && age < 50)
        {
            System.out.println("中年");
        }else{
            System.out.println("老年");
        }
    }
}

if语句中,若大括号控制的是一条语句,大括号可以省略不写,但不建议

switch语句

格式

switch(值){
    case 值1:
        语句
        break;
    case 值2:
        语句
        break;
    ……
    default:
        语句
        break;
}

执行流程:先看switch括号的值,然后与case后值匹配,有则执行相关case后语句,否则执行default控制的语句。

import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入数字:");
        int a=scanner.nextInt();
        switch(a){
            case 0:
                System.out.println("zero");
                break;
            case 1:
                System.out.println("one");
                break;
            case 2:
                System.out.println("two");
                break;
            default:
                System.out.println("其他");
                break;
        }
    }
}

  • case后必须是常量
  • switch后面的值只能是byte,short,int,字符,字符串,枚举
  • break可加可不加,当程序执行到某个case后的代码,未遇到break时,就会一直执行
  • default可省,但尽量加上

jdk14版本开始,case后面允许编写多个数据,多个数据中间使用逗号分隔。

        Scanner sc=new Scanner(System.in);
        int week=sc.nextInt();
        switch (week){
            case 1,2,3,4,5:
                System.out.println("工作日");
                break;
            case 6,7:
                System.out.println("休息日");
                break;
            default:
                System.out.println("输错了");
                break;
        }

还可以对以上代码再进行优化:

        Scanner sc=new Scanner(System.in);
        int week=sc.nextInt();
        switch (week){
            case 1,2,3,4,5->System.out.println("工作日");
            case 6,7->System.out.println("休息日");
            default->System.out.println("输错了");
        }

循环语句

  • for循环语句
  • while循环语句
  • do…while循环语句

for循环

格式:

//数字从小到大,代表执行顺序
for(初始化表达式1;判断表达式(boolean)2;迭代部分4)
{
    循环体3
}

  1. {}中定义的变量,在每一轮循环结束后,都会从内从中释放
  2. ()中定义的变量,在整个循环结束后,都会从内存中释放
  3. ()和{}之间不要加分号
例子
打印0-10
public class He{
    public static void main(String[] args){
        for(int i=0;i<=10;i++){
            System.out.println(i);
        }
    }
}
/*运行结果
0
1
2
3
4
5
6
7
8
9
10
*/
打印1-100之间偶数的和
public class Test{
    public static void main(String[] args){
        int sum=0;
        for(int i=1;i<=100;i++){
            if(i%2==0){
                sum+=i;
            }
        }
        System.out.println(sum);
    }
}
/*运行结果
2550
*/
打印100-999之间的所有水仙花数
public class Test{
    public static void main(String[] args){
        int a=0;
        int b=0;
        int c=0;
        for(int i=100;i<=999;i++){
            a=i%10;
            b=i/10%10;
            c=i/100;
            if((a*a*a+b*b*b+c*c*c)== i){
                System.out.println(i);
            }
        }
    }
}
/*运算结果
153
370
371
407
*/

while循环

格式:

while(循环条件){
    循环体
    迭代部分
}
例子
打印1-10
public class Test{
    public static void main(String[] args){
        int i=1;
        while(i<=10){
            System.out.println(i);
            i++;
        }
    }
}

do…while循环

格式:

do{
    循环语句;
    控制条件语句;
}while(boolean);

while循环和do…while循环的区别

while语句先判断后执行,循环体可能不执行。
do…while语句先执行后判断,循环体至少执行一次。

关键字continue,break和return

break

  1. 跳出switch语句。
  2. 当break关键字用于循环时,会终止循环
  3. 可用于父循环,给父循环起别名
public class Test{
    public static void main(String[] args){
        b:for(int i=1;i<=5;i++){
            for(int j=1;j<=5;j++){
                if(j%3==0){
                    break b;
                }
                System.out.print(j+"\t");
            }
            System.out.println();
        }
    }
}
/*
1	2	
*/

continue

  1. continue作用是结束本次循环,进入下一次循环。
  2. 可用于父循环,给父循环起别名
public class Test{
    public static void main(String[] args){
        b:for(int i=1;i<=5;i++){
            for(int j=1;j<=5;j++){
                if(j%3==0){
                    continue b;
                }
                System.out.print(j+"\t");
            }
            System.out.println();
        }
    }
}
/*
1	2	1	2	1	2	1	2	1	2
*/

return

  1. 结束当前方法
  2. 结束当前方法并返回指定结果

循环嵌套

一个循环当另一个循环的循环体

例子

//九九乘法表
public class Test{
    public static void main(String[] args){
        for(int i=1;i<=9;i++){
            for(int j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}
/*运算结果
1*1=1
1*2=2	2*2=4
1*3=3	2*3=6	3*3=9
1*4=4	2*4=8	3*4=12	4*4=16
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
*/
//打印1000内所有素数,每行5个
public class Test{
    public static void main(String[] args){
        int count=0;
        for(int i=2;i<=1000;i++){
            boolean flag=true;
            for(int j=2;j<=i/2;j++){
                if(i%j==0){
                    flag=false;
                    break;
                }
            }
            if(flag==true){
                System.out.print(i+"\t");
                count++;
                if(count%5==0)
                {
                    System.out.println();
                    count=0;
                }
            }
        }
    }
}
/*
2	3	5	7	11
13	17	19	23	29
31	37	41	43	47
53	59	61	67	71
73	79	83	89	97
101	103	107	109	113
127	131	137	139	149
151	157	163	167	173
179	181	191	193	197
199	211	223	227	229
233	239	241	251	257
263	269	271	277	281
283	293	307	311	313
317	331	337	347	349
353	359	367	373	379
383	389	397	401	409
419	421	431	433	439
443	449	457	461	463
467	479	487	491	499
503	509	521	523	541
547	557	563	569	571
577	587	593	599	601
607	613	617	619	631
641	643	647	653	659
661	673	677	683	691
701	709	719	727	733
739	743	751	757	761
769	773	787	797	809
811	821	823	827	829
839	853	857	859	863
877	881	883	887	907
911	919	929	937	941
947	953	967	971	977
983	991	997
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值