java流程控制语句

java流程控制语句

不论哪一种编程语言,都会提供两种基本的流程控制结构:分支结构和循环结构。其中分支结构用于实现根据条件来选择性地执行某段代码,循环结构则用于实现根据循环条件重复执行某段代码。

一、顺序结构

任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转。如果main方法的多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行。

  public static void main(String[] args) {
        //顺序执行,根据编写的顺序,从上到下运行 
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
    }
 public static void main(String[] args) {
        //这里变量取什么名,下面就用什么.
        // 例如:这里取名input,下面就用input.
        java.util.Scanner input = new java.util.Scanner(System.in);
        System.out.print("请输入姓名:");
        String name = input.next();
        System.out.print("请输入年龄:");
        int age = input.nextInt();
        System.out.print("请输入性别:");
        //input.next()得到字符串,不管你输入几个字符,
        // .charAt(0):从字符串中取出一个字符,(0)表示取第一个字符,(1)表示取第二个字符
        // charAt(index):也是一个方法,从第二个单词开始首字母大写,所以A是大写
        char gender = input.next().charAt(0);
        System.out.print("请输入体重:");
        double weight = input.nextDouble();
        System.out.print("请输入是否已婚(true/false):");
        boolean isMarry = input.nextBoolean();
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("性别:" + gender);
        System.out.println("体重:" + weight);
        System.out.println("婚否:" + (isMarry ? "是" : "否"));
    }

二、分支结构

if语句

第一种格式:
if(条件表达式){
	语句体; 
	}

执行流程

首先判断条件表达式看其结果是true还是false

如果是true就执行语句体

如果是false就不执行语句体

在这里插入图片描述

第二种格式:
if(关系表达式) {
	语句体1;
}else {
	语句体2;
}

执行流程

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体1

如果是false就执行语句体2

在这里插入图片描述

第三种格式:
if (判断条件1) {
	执行语句1;
} else if (判断条件2) {
	执行语句2; 
}
... 
}else if (判断条件n) {
	执行语句n; 
} else {
	执行语句n+1;
}

执行流程

首先判断关系表达式1看其结果是true还是false

如果是true就执行语句体1,然后结束当前多分支

如果是false就继续判断关系表达式2看其结果是true还是false

如果是true就执行语句体2,然后结束当前多分支

如果是false就继续判断关系表达式…看其结果是true还是false

如果没有任何关系表达式为true,就执行语句体n+1,然后结束当前多分支。

在这里插入图片描述

例:

 public static void main(String[] args) {
        int score = 89;
        if (score < 0 || score > 100) {
            System.out.println("你的成绩是错误的");
        } else if (score >= 90 && score <= 100) {
            System.out.println("你的成绩属于优秀");
        } else if (score >= 80 && score < 90) {
            System.out.println("你的成绩属于好");
        } else if (score >= 70 && score < 80) {
            System.out.println("你的成绩属于良");
        } else if (score >= 60 && score < 70) {
            System.out.println("你的成绩属于及格");
        } else {
            System.out.println("你的成绩属于不及格");
        }
    }
第四种:if…else嵌套

在if的语句块中,或者是在else语句块中, 又包含了另外一个条件判断(可以是单分支、双分支、多分支)

执行的特点:

(1)如果是嵌套在if语句块中的 只有当外部的if条件满足,才会去判断内部的条件

(2)如果是嵌套在else语句块中的 只有当外部的if条件不满足,进入else后,才会去判断内部的条件

public static void main(String[] args) {
        int score = 89;
        if (score < 0 || score > 100) {
            System.out.println("你的成绩是错误的");
        } else {
            if (score >= 90) {
                System.out.println("你的成绩属于优秀");
            } else if (score >= 80) {
                System.out.println("你的成绩属于好");
            } else if (score >= 70) {
                System.out.println("你的成绩属于良");
            } else if (score >= 60) {
                System.out.println("你的成绩属于及格");
            } else {
                System.out.println("你的成绩属于不及格");
            }
        }
    }

switch选择结构

语法格式:

switch(表达式){ 
	case 常量值1:
   	 	语句块1; 
   	 	break; 
    case 常量值2: 
    	语句块2;
    	break; 
    ... 
    default:
    	语句块n+1;
   		 break; 
    }

执行过程:

  • (1)入口

    • ①当switch(表达式)的值与case后面的某个常量值匹配,就从这个case进入;
    • ②当switch(表达式)的值与case后面的所有常量值都不匹配,寻找default分支进入;不管default在哪里
  • (2)一旦从“入口”进入switch,就会顺序往下执行,直到遇到“出口”,即可能发生贯穿

  • (3)出口

    • ①自然出口:遇到了switch的结束}
    • ②中断出口:遇到了break等

注意:

(1)switch(表达式)的值的类型,只能是:4种基本数据类型(byte,short,int,char),两种

引用数据类型(JDK1.5之后枚举、JDK1.7之后String)

(2)case后面必须是常量值,而且不能重复

 public static void main(String[] args) {
        //定义指定的星期
        int weekday = 5;
        //switch语句实现选择
        switch (weekday) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("你的数字有误");
                break;
        }
    }

三、循环语句

for循环

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要通过修改循环变量使得循环判断条件为false,从而结束循环,否则循环将一直执行下去,形成死循环。

for循环语句格式:

for(初始化语句①; 循环条件语句②; 迭代语句④){
	循环体语句③ 
}
for(;;){
	循环体语句块;//如果循环体中没有跳出循环体的语句,那么就是死循环
}
public static void main(String[] args) {
	for(int x = 1; x <= 10; x++) { 						         			System.out.println("HelloWorld"+x);
	}
}    

while循环

while循环语句标准格式:

while (循环条件语句①) {
	循环体语句②;
}
while(true){ 
	循环体语句;//如果此时循环体中没有跳出循环的语句,也是死循环 
}
//注意:
//while(循环条件)中循环条件必须是boolean类型

执行流程:

  • 第一步:执行循环条件语句①,看循环条件语句的值是true,还是false;

    • 如果是true,执行第二步;
    • 如果是false,循环语句中止,循环不再执行。
  • 第二步:执行循环体语句②;

  • 第三步:循环体语句执行完后,重新从第一步开始再执行一遍

/**
 * 世界最高山峰是珠穆朗玛峰,它的高度是8844.43米,假如我有一张足够大的纸,它的厚度 是0.1毫米。
 * * 请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
 */
public class WhileTest01 {
    public static void main(String[] args) {
        //定义一个计数器,初始值为0 
        int count = 0;
        //定义纸张厚度 
        double paper = 0.1;
        //定义珠穆朗玛峰的高度 
        int zf = 8844430;
        //因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用 while循环
        // 折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高 度 
        while (paper <= zf) {
            //循环的执行过程中每次纸张折叠,纸张的厚度要加倍 
            paper *= 2; //在循环中执行累加,对应折叠了多少次
            count++;
        }
        //打印计数器的值 
        System.out.println("需要折叠:" + count + "次");
    }
}

break关键字

使用场景:终止switch或者当前循环

在选择结构switch语句中

在循环语句中

离开使用场景的存在是没有意义的

 public static void main(String[] args) {
        java.util.Scanner input = new java.util.Scanner(System.in);
        int positive = 0;
        int negative = 0;
        while (true) {
            System.out.print("请输入整数(0)结束:");
            int num = input.nextInt();
            if (num == 0) {
                break;
            } else if (num > 0) {
                positive++;
            } else {
                negative++;
            }
        }
        System.out.println("正数:" + positive + ",负数:" + negative);
    }

continue关键字

使用场景:结束本次循环,继续下一次的循环

  public static void main(String[] args) {
        //打印1-100之间的整数,跳过7的倍数和7结尾的数 
        for (int i = 1; i <= 100; i++) {
            if (i % 7 == 0 || i % 10 == 7) {
                continue;
                //break; 
            }
            System.out.println(i);
        }
    }

嵌套循环

嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数。当然可以是三种循环任意互相嵌套。

//打印5行5列矩形
public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值