【Java入门】选择语句&循环语句


学习目标

  • 了解什么是顺序结构
  • 必须掌握if、if-else、if-else if-else的语法和使用
  • 必须掌握switch语句的语法和使用
  • 必须掌握while、do-while、for的语法和使用
  • 掌握什么是嵌套循环和如何使用
  • 掌握控制循环语句break、continue、return三者的区别和用法

一、选择语句


1.1、顺序结构

如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束。
在这里插入图片描述
例如:

public class SequenceDemo{
	public static void main(String[] args) {
		System.out.println("A");
		System.out.println("B");
		System.out.println("C");
		System.out.println("D");
	}
}

无论代码怎么运行,程序的输出顺序总是ABCD。


1.2、选择结构

选择结构也被称为分支结构。代码根据逻辑判断,存在多个不同的结果,此时就会产生不同的选择,不同的选择执行不同的代码。Java中存在两种选择结构语句:

  • if-elseif-else 语句

  • switch 语句


1.2.1、if

语义:如果…那么…

if(boolean表达式){
     语句体;
}

if后面的 { } 表示一个整体——代码块,称之为语句体,当boolean表达式为true,才执行这里的代码块。
注意:if(boolean表达式)后面是没有分号的。

if(boolean表达式);//错误写法,不能有分号
{
    语句体;
}

在这里插入图片描述

public class IfDemo {
	public static void main(String[] args) {
		System.out.println("begin...");
		// 定义一个变量
		int a = 10;
        // 如果a大于5,执行语句体的打印
		if (a > 5) {
			System.out.println("a大于5");
		}
		System.out.println("and...");
        
        // 如果a大于20,执行语句体的打印
		if (a > 20) {
			System.out.println("a大于20");
		}
		System.out.println("ending...");
	}
}

输出结果:

begin...
a等于5
and...
ending...

1.2.2、if-else

语义:如果…那么…否则…
二选一

if (boolean表达式) {
  	语句体1;
} else {
	语句体2;
}

如果boolean表达式结果为true,就执行语句体1,否则执行语句体2。
在这里插入图片描述

public class IfElseDemo {
	public static void main(String[] args) {
		System.out.println("begin...");
        // 定义一个变量
		int a = 10;
        // 如果变量a的值能被2整除,那么执行语句体的打印
		if (a % 2 == 0) {
			System.out.println("a是偶数");
		} else {//否则执行这里的语句体
			System.out.println("a是奇数");
		}
        
		System.out.println("and...");
        
		int b = 11;
		if (b % 2 == 0) {
			System.out.println("b是偶数");
		} else {
			System.out.println("b是奇数");
		}
		System.out.println("ending...");
	}
}

输出结果:

begin...
a是偶数
and...
b是奇数
ending...

1.2.3、if else if else

语义:如果…那么…如果…那么…否则…
多选一

if (boolean表达式1) {
    语句体1
} else if (boolean表达式2) {
	语句体2
}
//...可以有多个else if
else {
	上述条件都为false,执行该语句体
}

在这里插入图片描述

public class IfElseIfElseDemo1 {
	public static void main(String[] args) {
		System.out.println("begin...");
		int a = 10;
		int b = 20;
		if (a > b) {
			System.out.println("a > b");
		} else if (a < b) {
			System.out.println("a < b");
		} else {
			System.out.println("a == b");
		}
		System.out.println("ending...");
	}
}

1.2.4、switch语句

对于这种判断条件是否等于某一个数值的,我们有另一种更简单的分支语句——switch语句,其格式如下:

switch(整型表达式){
	case A:
		语句体1; break;
	case B:
		语句体2; break;
    case C:
		语句体3; break;
    ...多个case语句
	[default:
		以上值都不满足时,执行此语句;
        break;// 可以省略
    ]
}

使用注意:

  • 整型表达式的类型:byte,short,char,int
  • Java5开始支持枚举
  • Java7开始支持String
  • case之后的表达式结果必须是常量
  • case表示执行代码的入口,一旦进入某个入口后,代码会忽略掉后面其他case,代码会一直往下执行,直到遇到break或return。(switch的穿透效果

在这里插入图片描述举例:

public class SwitchDemo{
	public static void main(String[] args) {
		System.out.println("begin...");
        Scanner s = new Scanner(System.in);
    	System.out.println("请输入一个数字:");
    	//获取控制台输入的数字(不要输入非数字)
    	int weekday = s.nextInt();
		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;
		}
		System.out.println("ending...");
	}
}

效果等价于if-elseif-elseif-else
使用场景:所有的选择语句都可以使用if语句,switch语句只适合做等值判断。


二、循环语句


2.1、while

while(boolean表达式) {
    循环体;
}

在这里插入图片描述
特点:先判断boolean表达式:

  • 若为false,跳过循环体,

  • 若为true,执行循环体,执行完,再重新判断boolean表达式。

案例:需求:求1-10之间所有偶数的和

public class Test11While5 {
    public static void main(String[] args) {
        // 需求:求1-10之间所有偶数的和
        /**
         * 分析:
         * 1 => 问1你是不是偶数,你就是求和的数
         * 2 => 问2你是不是偶数,你就是求和的数 sum+=2
         * 3 => 问3你是不是偶数
         */

        int sum = 0;
        int i = 1;
        while( i <= 10 ){
            if( i % 2 == 0 ){
                sum += i;
            }
            i++;
        }
        System.out.println("sum = " + sum);

        /**
         * while和if可以嵌套使用
         */
    }
}

2.2、do while

do {
   循环体;
} while(boolean表达式);

在这里插入图片描述
特点:先执行一次循环体,再判断表达式:

  • 若为true,就执行循环体,再重新判断boolean表达式
  • 若为false,跳过循环体。

while和do while的区别

do while是先执行后判断,即使判断条件为false,该循环至少会执行一次

案例:求1~10的整数和

/**
 * do - while:
 *  先执行一次循环体,然后再判断表达式
 */
public class _08_do_while {
    public static void main(String[] args) {
        // 求1~10的和
        int num = 1;
        int sum = 0;
        do{
            sum += num;
            num++;
        } while(num <= 10);
        System.out.println("1~10的和:" + sum);

        // 即使条件不满足,也会先执行一遍循环体的内容
        do{
            System.out.println("循环结束-do while");
        } while(num == 12);

        // 条件不满足 不会执行循环体内容
        while(num == 12) {
            System.out.println("循环结束-while");
        }

    }
}

2.3、for

for(①初始化语句;boolean表达式; ④循环后操作语句){
	③循环体;
}

在这里插入图片描述
特点:

  • 初始化语句:只在循环开始时执行一次,一般是定义一个变量,并赋值,用于控制循环次数。

  • boolean表达式:表达式为false时,循环终止,为true,才执行循环体。

  • 循环后操作语句:循环体执行后会调用该语句,一般是变量的递增或递减操作

执行顺序:

①、初始化语句->②、boolean表达式:

  • 若为false:跳过循环体

  • 若为true:③、执行循环体

④、循环后操作语句->②、boolean表达式;

案例:求1~100的整数之和

public class ForDemo {
	public static void main(String[] args) {
		System.out.println("begin...");
		int total = 0;// 最终之和,初始为0
		for (int count = 1; count < 101; count++) {
			total = total + count;
		}
		System.out.println(total);
		System.out.println("ending...");
	}
}

死循环:

使用死循环的业务场景:当我们不知道循环的次数时使用,当满足我们所需的业务条件时,添加“break”关键字手动结束循环

while死循环:

while (true) {
	//TODO
}

do while死循环

do {
	//TODO
} while (true);

for循环

for (;;) {
	//TODO
}

循环结构的选择:

  • while : 在不清楚循环次数时选择
  • do-while :在不清楚循环次数,且需要循环体至少执行一次时选择
  • for:清楚循环次数时选择

2.4、嵌套循环

就是在一个循环中还有一个循环

for(①初始化语句;boolean表达式;③循环后需要操作的语句){
	for(④初始化语句;boolean表达式;⑥循环后需要操作的语句){
		⑦代码块
	}
}

嵌套循环的过程:

先初始化①,再判断②中的boolean表达式,如果是true,就执行内嵌的for循环
总的来说就是:①->②->④->⑤->⑦->⑥->②->③->④->⑤->⑦->⑥
如果boolean表达式为true就结束当前的循环。
经典案例:

/**
         * 打印九九乘法表
         */
        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();
        }

结果:
在这里插入图片描述


2.5、控制循环


2.5.1、break

break表示结束当前所在的循环。

举例说明:

// 打印1~10的整数,如果数字是5,则停止整个循环
for(int i = 1 ; i <= 10 ; i++){
    if(i == 5) {
        break;
    } else {
        System.out.println(i);
    }
}

输出结果:只打印了5之前的数字
在这里插入图片描述


2.5.2、continue

表示跳过当前这一次循环,直接进入下一次循环操作。

案例:

// 打印1~10的整数,如果数字是3或者7则不打印
for(int i = 1 ; i <= 10 ; i++){
    if(i == 3 || i == 7 ){
        // 跳过当前循环
        // 当i 等于 3 或者 7 时 , 执行continue,跳出当前循环
        // 继续执行下一次循环
        continue;
    } else {
        System.out.println(i);
    }
}

输出结果: 除了3和7之外全都打印了
在这里插入图片描述

2.5.3、return

直接停止整个程序的运行,不单单只是停止当前循环,如果该循环后面还有其他代码语句,并不会执行

public class ReturnDemo {
    public static void main(String[] args) {
        for (int i = 1 ; i <= 5 ; i++) {
            System.out.println(i);
            if (i == 2) {
                return;
            }
        }

        System.out.println("程序停止运行了");
    }
}

输出结果: for循环外的输出语句并没有执行
在这里插入图片描述


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java入门循环结构的进阶答案包括以下几个方面: 1. 嵌套循环:进阶的循环结构中常常需要使用嵌套循环来完成复杂的任务。嵌套循环即在一个循环语句中再嵌套另一个循环语句。通过嵌套循环,我们可以对二维数组、矩阵等复杂数据结构进行遍历和操作。 2. 循环的控制:在进阶的循环中,我们需要掌握如何控制循环的次数和结束循环的条件。常用的控制语句有break和continue。break语句用于结束当前循环,转移到循环后的语句执行;continue语句用于跳过当前循环的剩余代码,直接进入下一次循环。 3. 循环中的判断:进阶的循环结构中,往往需要对循环中的条件进行判断,来决定是否继续执行循环。常用的判断语句有if语句、switch语句等。 4. 循环的优化:在编写循环代码时,我们需要注意循环的效率和性能。常见的循环优化技巧包括减少循环次数、避免使用过多的嵌套循环、使用合适的数据结构等。 5. 循环中的异常处理:在循环中,可能会出现一些异常情况,如数组越界、除零错误等。对于这些异常情况,我们需要使用try-catch语句来捕捉和处理异常,以避免程序崩溃。 总之,Java入门循环结构的进阶答案涵盖了嵌套循环、循环的控制、循环中的判断、循环的优化以及循环中的异常处理等方面的内容。掌握这些进阶技巧,可以更好地应对复杂的编程需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值