顺序控制+单分支+双分支

1)顺序控制

程序从上到下逐行执行,中间没有任何判断和跳转。

2)分支控制

(1)单分支

if(条件表达式){

执行代码;

}

条件表达式为true则执行代码,如果为false则不执行。

(2)双分支

if(条件表达式){

执行代码1;

}

else{

执行代码2;

}

练习题

import java.util.Scanner;
public class Hello{
	public static void main(String args[]){
		//第一题
	    Scanner myScanner = new Scanner(System.in);
		System.out.println("输入第一个数");
		double num1 = myScanner.nextDouble();
		System.out.println("输入第二个数");
		double num2 = myScanner.nextDouble();
		if ((num1>10.0)&&(num2<20.0)){
			System.out.println(num1 + num2);
		}

		//第二题
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入一个数");
		int num1 = myScanner.nextInt();
		if ((num1%3==0)&&(num1%5==0)){
			System.out.println("既能被3整除又能被5整除");
		}

		// 第三题
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入一个年份:");
		int year = myScanner.nextInt();
		if (((year%4==0)&&(year%100!=0))||(year%400==0)){
			System.out.println("这一年是闰年");
		}
	}
}

(3)多分支

if(条件表达式){

执行代码1;

}

else if(条件表达式2) {

执行代码2;

}

……

else{

执行代码块n;

}

多分支可以没有else,即上面的绿色部分。如果所有的条件表达式都不成立,则一个执行入口都没有,如果有else,如果所有的条件表达式都不成立,则执行默认模块n

import java.util.Scanner;
public class Hello{
	public static void main(String args[]){
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入芝麻信用分");
		int score = myScanner.nextInt();
		if (score == 100){
			System.out.println("信用极好");
		}
		else if((score > 80)&&(score <= 99)){
			System.out.println("信用优秀");
		}
		else if((score >= 60)&&(score <= 80)){
			System.out.println("信用一般");
		}
		else {
			System.out.println("信用不及格");
		}
	}
}

(4)嵌套分支

在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。一般不要超过3层(可读性不好)

if(){

        if(){

            //if else

        }else{

            //if else

        }

}

import java.util.Scanner;
public class Hello{
	public static void main(String args[]){
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入月份");
		int jan = myScanner.nextInt();
		if ((jan>0)&&(jan<13))
		{
			System.out.println("请输入年龄");
			int age = myScanner.nextInt();
			if ((jan>3)&&(jan<11)){
				if ((age>=18)&&(age<=60)){
					System.out.println("票价为60");
				} else if (age<18){
					System.out.println("票价为30");
				} else {
					System.out.println("票价为20");
				}
			}else{
				if ((age>=18)&&(age<=60)){
					System.out.println("票价为40");
				}else{
					System.out.println("票价为20");
				}
			}
		}else{
			System.out.println("输入月份错误,请重新输入");
		}
	}
}

switch(表达式){

case 常量1://当…

语句块1;

break;//跳出switch结构

case 常量2://如果1没有break则执行2

语句块2;

break;

case 常量n://当…

语句块n;

break;

default;//没有匹配上则执行default

default语句块;

break;

}

import java.util.Scanner;
public class Hello{
	public static void main(String args[]){
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入一个字符");
		char day = myScanner.next().charAt(0);
		switch (day){
			case 'a':
				System.out.println("星期一");
				break;	
			case 'b':
				System.out.println("星期二");
				break;
			case 'c':
				System.out.println("星期三");
				break;
			case 'd':
				System.out.println("星期四");
				break;
			case 'e':
				System.out.println("星期五");
				break;
			case 'f':
				System.out.println("星期六");
				break;
			case 'g':
				System.out.println("星期日");
			break;
			default:
				System.out.println("无对应");
				break;
		}
	}
}

switch中只允许使用byte,int,short,char,enum(枚举),String

case语句中的值只能是常量或常量表达式,不能是变量

default可以有也可以没有

如果case1里没有break;则不判断case2,执行case2的语句

import java.util.Scanner;
public class Hello{
	public static void main(String args[]){
		Scanner myScanner = new Scanner(System.in);
		// System.out.println("请输入一个字符");
		// char cha = myScanner.next().charAt(0);
		// switch (cha){
		// 	case 'a':
		// 		System.out.println("A");
		// 		break;	
		// 	case 'b':
		// 		System.out.println("B");
		// 		break;
		// 	case 'c':
		// 		System.out.println("C");
		// 		break;
		// 	case 'd':
		// 		System.out.println("D");
		// 		break;
		// 	case 'e':
		// 		System.out.println("E");
		// 		break;
		// 	default:
		// 		System.out.println("other");
		// 		break;
		// }
		// 取整来表示是否合格
		// System.out.println("输入成绩");
		// int score = myScanner.nextInt();
		// score = score/60;
		// switch (score){
		// 	case 1 :
		// 		System.out.println("及格");
		// 		break;
		// 	case 0 :
		// 		System.out.println("不及格");
		// 		break;
		// }
		// 3、使用穿透比较简洁
		System.out.println("请输入月份:");
		int y = myScanner.nextInt();
		switch (y){
			case 3:
			case 4:
			case 5:
				System.out.println("春季");
				break;
			case 6:
			case 7:
			case 8:
				System.out.println("夏季");
				break;
			case 9:
			case 10:
			case 11:
				System.out.println("秋季");
				break;
			case 12:
			case 1:
			case 2:
				System.out.println("冬季");
				break;
		}
	}
}

switch和if的比较

1、如果判断的具体数值不多,而且都符合byt short int char enum String这6种类型。虽然两个语句都可以使用,建议使用switch语句。

2、其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。

3)循环控制

for(循环变量初始化;循环条件;循环变量迭代){

                循环操作(可以多条语句);

}

运行程序之后循环变量会迭代

可以改写为:

循环变量初始化;

for(;循环条件;){

                循环操作(可以多条语句);

                循环变量迭代;

}

while循环控制

while(循环条件){

                循环体(语句);

                循环变量迭代;

}

while也有四要素,只是四要素放的位置,不一样。while返回的是一个布尔类型的值

for 一般用在确定循环次数  while 用在不确定循环次数使用 比如按某个按键退出程序

 

public class Hello{
	public static void main(String args[]){
		int i = 40;
		while (i<=200){
			if(i%2==0){
				System.out.println(i);
			}
			i++;
		}
	}
}

do…while循环控制

do{

                循环体(语句);

                循环变量迭代;

}while(循环条件);

1、do while是关键字

也有循环四要素,只是位置不一样

先执行再判断

最后有一个分号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值