Java基础 3.18

1.一个例子

-10.5 % 3 =

public class BitOperator {

	public static void main(String[] args) {
		//若a为小数 则需要在中间加入强转 a - (int)a / b * b
		//-10.5 - (-10) / 3 * 3
		//-10.5 - (-3) * 3
		//-10.5 - (-9)
		// = -1.5
		System.out.println(-10.5 % 3);
	}	
}

2.顺序控制

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

注意:Java中定义变量时采用合法的前向引用 

3.分支控制if-else

单分支

基本语法

if(条件表达式){
			执行代码块;(可以有多条语句)
}

当条件表达式为true时,就会执行{}中的代码。如果为false,就不会执行。

如果{}中只有一条语句,可以不用写{},但建议写上{},更为清晰

import java.util.Scanner;

public class BitOperator {	

	public static void main(String[] args) {
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入你的年龄:");
		int age = myScanner.nextInt();
		if(age >= 18) {
			System.out.println("你已满刑事年龄,要对自己的行为负责");
		}
	}	
}

双分支

基本语法

if(条件表达式){
			执行代码块1;(可以有多条语句)
} else {
            执行代码块2;(可以有多条语句)
}
public class If01 {

	public static void main(String[] args) {
		int n1 = 56;
		int n2 = 34;
		int sum = n1 + n2; 
		if((sum % 3 == 0) && (sum % 5 == 0)) {
			System.out.println("能被3和5整除");
		} else {
			System.out.println("不能被3和5整除");
		}
	}	
}
public class If01 {

	public static void main(String[] args) {
		int year = 2020;
		if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
			System.out.println("该年份为闰年");
		} else {
			System.out.println("该年份不为闰年");
		}
	}	
}

多分支

if(条件表达式1){
    执行代码块1;
}
else if(条件表达式2){
    执行代码块2;
}
......
else{
    执行代码块n;
}

说明:

  1. 当条件表达式1成立时,执行代码块1
  2. 如果条件表达式1不成立,才去判断条件表达式2是否成立
  3. 如果条件表达式2成立,执行代码块2
  4. 以此类推,如果所有的表达式都不成立
  5. 则执行else的代码块

注意:只能有一个执行入口

特别说明:

  • 多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有
  • 如果有else,如果所有的条件表达式都不成立,则默认执行else代码块
import java.util.Scanner;

public class If01 {
	
	public static void main(String[] args) {
		//输出一个人的信用分评价
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入你的行用分:");
		int credit = myScanner.nextInt();
		if (credit >= 0 && credit <= 100) {
			if (credit == 100) {
			System.out.println("信用极好");
			} else if (80 < credit && credit <= 99) {
			System.out.println("信用优秀");
			} else if (60 <= credit && credit <= 80) {
			System.out.println("信用一般");
			} else if (credit < 60 && credit >= 0) {
			System.out.println("信用不及格");
			} 
		} else {
			System.out.println("请输入在0-100的数:)");
		}
		
	}	
}

 注意:如果条件判断语句中为 =,将执行该操作,可能改变原条件判断的布尔值

嵌套分支

在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支

建议:不要超过3层嵌套(可读性不好)

import java.util.Scanner;

public class if02 {

	public static void main(String[] args){
		//参加歌手比赛
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入你的性别: ");
		char gender = myScanner.next().charAt(0);
		System.out.println("请输入你的成绩: ");
		double score = myScanner.nextDouble();
		if (score > 8.0) {
			System.out.println("恭喜你成功晋级!");
			if (gender == '男') {
				System.out.println("你被分到下一阶段的男子组");
			} else if (gender == '女') {
				System.out.println("你被分到下一阶段的女子组");
			} else {
				System.out.println("请输入正确性别!");
			}
		} else {
			System.out.println("很可惜,你被淘汰了!再接再励");
		}
	}	
}
import java.util.Scanner;

public class if03 {

	public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		System.out.println("现在的月份是: ");
		int month = myScanner.nextInt();
		System.out.println("请输入你的年龄: ");
		int age = myScanner.nextInt();
		if (month >= 4 && month <= 10) {
			if (age < 18) {
				System.out.println("身份:儿童,你的票价为30");
			} else if (age >= 18 && age <= 60) {
				System.out.println("身份:成人,你的票价是60");
			} else if (age > 60) {
				System.out.println("身份:老人,你的票价是20");
			} 
		} else {
			if (age > 18 && age < 60) {
				System.out.println("身份:成人,你的票价是40");
			} else {
				System.out.println("你的票价是20");
			}
		}
	}	
}

4.switch分支结构

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

 

  1. switch关键字,表示switch分支
  2. 表达式对应一个值
  3. case 常量1:当表达式的值等于常量1,就执行语句块1
  4. break:表示退出switch
  5. 如果和case常量1匹配,如果不匹配就匹配case常量2,以此类推
  6. 如果一个都没匹配上,执行default 

switch快速入门 

import java.util.Scanner;//表示把java.util下的Scanner类导入

public class switch01 {

	public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入a-g的字符: ");
		char weekday = myScanner.next().charAt(0);
		//
		switch (weekday) {
			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;//default段,有无break都会退出程序
		}
	}	
}

switch注意事项:

  1. switch表达式的数据类型与case对应的常量值类型必须相同,或者可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
  2. switch(表达式)中表达式的返回值必须是:byte,short,char,int,enum(枚举),String
  3. case子句中的值必须是常量,而不能是变量
  4. default子句是可选的,当没有匹配的case时,执行default
  5. break语句用来在执行完一个case分支后使程序跳出switch语句块,如果没有写break,程序会顺序执行到switch结尾,除非遇到break

相关练习:

import java.util.Scanner;

public class switch03 {

	public static void main(String[] args){
        //输入a-e输出对应的大写字母
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入 a - e 的字母: ");
		char a = myScanner.next().charAt(0);
		switch (a) {
			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;
		}
	}	
}
import java.util.Scanner;

public class switch04 {

	public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		//要求:学生成绩大于60分的,输出合格,低于60分的,
		//输出不合格。(输入的成绩不能大于100),提示 成绩/60
		//思路
		//1.可使用分支来完成,但要求用switch完成
		//2.这里可以有个转换
		//如果成绩在[60, 100], (int)(成绩/60) = 1
		//如果成绩在[0, 60), (int)(成绩/60) = 0
		System.out.println("请输入你的成绩: ");
		int grade = myScanner.nextInt();
		//使用if-else保证成绩在0-100
		if (grade >= 0 && grade <= 100) {
			switch ((int)(grade / 60)) {
				case 1 :
					System.out.println("合格");
					break;
				case 0 :
					System.out.println("不合格");
					break;
				// default :
				// 	System.out.println("不符合要求");
			}
		} else {
			System.out.println("输入的成绩不在范围内");
		}
	}	
}
import java.util.Scanner;

public class switch05 {
	
	public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in);
		//输入月份,查询对应的季节
		//思路
		//1.查询使用switch结构 对应月份对应case
		//2.可以使用穿透(开发中比较常用)
		//代码实现
		System.out.println("输入要查询的月份: ");
		int month = myScanner.nextInt();
		switch (month) {
			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;
			default :
				System.out.println("输入的不在月份范围内!");
				break;
		} 
	}	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值