分支结构和循环的回顾


一、分支结构

1、if语句–单分支

使用格式

if(布尔表达式){

  //布尔表达式为true时执行的代码

}

举例:使用if判断

public class Test{
	public static void main(String[] args){
		int a = 10;
		int b = 20;
		if(a < b){
			System.out.println(a);
		}
	}
}

输出结果:

10

  以上的a < b判断之后为true,因此执行System.out.println(a);这条语句。如果布尔表达式为false,则不会执行if大括号里边的代码块。


2、if…else…双分支语句

使用格式

if(布尔表达式){

  代码块

}else if(布尔表达式){

  代码块

}

举例:使用双分支判断输出结果

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

输出结果:

a>=b

  上述的分支必须遵守的原则为:必须先判定if(a<b)且布尔表达式为false的时候才会执行else中的代码块。


3、if…else if…else…多分支语句

使用格式

if(布尔表达式){

  代码块

}else if(布尔表达式){

  代码块

}else{

  代码块

}

public class Test{
	public static void main(String[] args){
		int a = 20;
		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");
		}
	}
}

输出结果:

a>b

  对于多分支结构,可以在中间加入多个else if进行中间条件判定。


说明:单分支、双分支、多分支三者之间又可以相互嵌套使用。

4、switch分支语句

基本语法

switch(整数|枚举|字符|字符串){

  case 内容1:{

     //与内容1相同时执行的代码块

     [break;]

     }

  case 内容2:{

     //与内容1相同时执行的代码块

     [break;]

     }

  default:{

     //上述内容都不满足时执行的语句

     [break;]

     }

}

举例:输出红绿蓝三基色

public class Test{
	public static void main(String[] args){
		char red = '红';
		switch(red){
			case '红':{
				System.out.println("红色");
				break;
				}
			case '绿':{
				System.out.println("绿色");
				break;
				}
			case '蓝':{
				System.out.println("蓝色");
				break;
				}
			default:{
				System.out.println("输入错误");
				break;
				}
		}

	}
}

  上述代码是以字符作为判断依据,传入参数之后先与第一个字符比较,若相同,则执行case语句中的代码。

输出结果

红色

注意事项

  ①:switch中的值必须是整数|枚举|字符|字符串,如果为byte,short类型则自动转换为int类型的值,而double,float,long,boolean则不能使用。

  ②:若没有特殊要求,每一个case的代码块的最后一句必须加上break来结束分支结构。如果没有加break将会一直向下执行每一个的case代码块,直到遇到break才会结束。

  ③:switch分支语句中可以不带default分支,但是建议带着default分支比较好。该分支表示默认,即该分支接收所有没有匹配的内容。


注意一下两种情况

第一种:当第case不匹配且没加break第二种:当第case匹配且没加break
public class Test{
public static void main(String[] args){
char red = ‘红’;
switch(red){
case ‘绿’:{
System.out.println(“绿色”);
//break;
}
case ‘红’:{
System.out.println(“红色”);
break;
}
case ‘蓝’:{
System.out.println(“蓝色”);
break;
}
default:{
System.out.println(“输入错误”);
break;
}
}

}
}
public class Test{
public static void main(String[] args){
char red = ‘红’;
switch(red){
case ‘红’:{
System.out.println(“红色”);
//break;
}
case ‘绿’:{
System.out.println(“绿色”);
break;
}
case ‘蓝’:{
System.out.println(“蓝色”);
break;
}
default:{
System.out.println(“输入错误”);
break;
}
}

}
}
红色
红色
绿色

第一种情况:虽然第一个匹配项没加break,但是内容与值不匹配,因此不会输出绿色。继续向下寻找匹配项,直到找到,然后输出结果,且存在break,结束分支。

第二种情况:虽然第一个匹配项同样没加break,但是第一个case与值匹配,则输出红色,没有遇到break语句,因此继续向下执行,已经有了匹配结果,之后只会输出case中的代码块,输出绿色,直到遇到break语句才会结束分支。




二、循环控制结构


1、while循环

基本语法格式:

while(条件){

  循环代码块;

}

说明:若条件为true则执行循环语句,否则结束循环。

举例:计算1!+2!+3!+4!+5!

public class Test1{
	public static void main(String[] args){
		int a = 5;
		int num = 0;
		while(a > 0){
			int sum = 1;
			int n = 1;
			while(n <= a){
				sum *= n;
				n++;
			}
			a--;
			num += sum;
		}
		System.out.println(num);
	}
}

输出结果

153

:while循环中也可以嵌套while循环,如上述范例。当while条件为true的时候就会执行循环语句代码块,反之则跳出循环,即结束循环。

2、break和continue

  那么我们在使用循环的过程中如果得到了想要得到的结果,但是循环依然继续,这样的代码就不会是最优的,在Java中提供有break关键字和continue关键字,接下来观察范例,总结它们的作用。

范例:观察break的使用

public class Test{
	public static void main(String[] args){
		int a = 10;
		while(a > 0){
			if(a == 4){
				break;
			}
			System.out.print(a + ", ");
			a--;
		}
	}
}

输出结果

10, 9, 8, 7, 6, 5,

  通过该代码的执行结果,可以发现当打印到3的时候结束循环。原因是在while循环中加入了判断,当a=4的时候,执行break,直接结束循环,不在输出任何内容。这就是break的功能。既然break是结束循环,那么continue的作用又是什么呢?

范例:观察continue的作用

public class Test{
	public static void main(String[] args){
		int a = 10;
		while(a > 0){
			if(a == 4){
				a--;
				continue;
			}
			System.out.print(a + ", ");
			a--;
		}
	}
}

输出结果

10, 9, 8, 7, 6, 5, 3, 2, 1,

  通过这个代码,可以发现打印的内容没有4,这个就是执行过程中遇到了continue语句。continue的作用就是结束本次循环,立即进入下一次循环,直到条件为false结束循环。但是需要注意的是如果没有在if中加入a–,就会进入死循环,原因是a的值永远都是4,虽然跳出了本次循环,但是a的值没变,所以一直在进行判断和跳出本次循环操作。


3、for循环

基本语法

for(表达式1;表达式2;表达式3){

  循环体;

}

说明

  表达式1:用于初始化循环变量

  表达式2:循环条件

  表达式3:更新循环变量

范例:for循环的简单使用

public class Test{
	public static void main(String[] args){
		for(int i = 1;i < 10;i++){
			System.out.print(i + ", ");
		}
	}
}

输出结果

1, 2, 3, 4, 5, 6, 7, 8, 9,

  for循环也可以结合break或者continue一起使用,达到控制结束循环的效果。

注意事项

  表达式1可以放在圆括号外边,表达式3可以放在循环体里边,但是表达式2不可以省略。例:

int i = 1;
for(;i < 10;){
    i++;
}

4、do…while循环

使用格式

do{

  循环语句;

}while(循环条件);

说明:先执行循环语句,在判断循环条件,若循环条件为true,则继续下一次执行,若循环条件为false,则结束循环。

例:打印1~10的数字

public class Test{
	public static void main(String[] args){
		int num = 1;
		do{
			System.out.print(num + ", ");
			num++;
		}while(num <= 10);
	}
}

输出结果

1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

注意事项:do…while循环最后有一个分号不能忘记

  但是do…while循环存在局限性,局限性就是先执行循环体。例:打印1~10的数字,不能打印0

public class Test{
	public static void main(String[] args){
		int num = 0;
		do{
			System.out.print(num + ", ");
			num++;
		}while(num <= 10);
	}
}

输出结果

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,




三、输入输出

1、输出:

System.out.println(msg); //输出一个字符串,并且换行

System.out.print(msg); //输出一个字符串,且不换行

System.out.printf(format,msg); //格式化输出

2、从键盘输入

(1)读入一个字符

示例:

import java.io.IOException;

public class Test{
	public static void main(String[] args) {
        System.out.print("Enter a Char:");
        char i = 0;
        try {
            i = (char) System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

输出结果

Enter a Char:f


(2)使用Scanner读取字符串/整数/浮点数

import java.util.Scanner;

public class Test{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入你的姓名:");
		String name = sc.nextLine();
		System.out.print("请输入你的年龄:");
		int age = sc.nextInt();
		System.out.print("请输入你的工资:");
		double salary = sc.nextDouble();
		System.out.println("信息如下:");
		System.out.println("姓名:" + name + "\n年龄:" + age + "\n工资:" + salary);
		sc.close();
    }
}

输出结果

请输入你的姓名:张三
请输入你的年龄:22
请输入你的工资:10000
信息如下:
姓名:张三
年龄:22
工资:10000.0

说明:sc.next()和sc.nextLine()的区别:

  ①sc.next()表示遇到空格就会结束

  ②sc.nextLine()表示读取一行数据,包括空格


(3)使用Scanner循环读取n个数字

import java.util.Scanner;

public class Test{
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double sum = 0.0;
        int num = 0;
        while(sc.hasNextDouble()){
            double tmp = sc.nextDouble();
            sum += tmp;
            num++;
        }
        System.out.println("sum = " + sum);
        System.out.println("avg = " + sum / num);
        sc.close();
    }
}

输出结果

2.0
3.5
7.6
^Z
sum = 13.1
avg = 4.366666666666666

注意:当循环输入多个数据时后结束输入使用Ctrl + Z即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值