Java教程

Java自学笔记(流程控制-分支结构)

本文主要是介绍Java自学笔记(流程控制-分支结构),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

分支结构(if…else、switch-case)

1. if…else结构

if 语句有三种格式

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

使用说明:

  • ​ 条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量

  • ​ 语句块只有一条执行语句时,一对{}可以省略,但建议保留

  • ​ if-else语句结构,根据需要可以嵌套使用

  • ​ 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

  • ​ 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓

  • ​ 当多个条件是“包含”关系时,“小上大下 / 子上父下”

例题:

  1. 成绩为100分时,奖励一辆BMW;
    成绩为(80,99]时,奖励一台iphone xs max;
    当成绩为[60,80]时,奖励一个 iPad;
    其它时,什么奖励也没有。
    请从键盘输入成绩,并加以判断

代码示例:

// if-else 语句练习

import java.util.Scanner; // 导入Scanner类

class Exercise {
	public static void main(String[] args) {
		System.out.println("请输入成绩");
		Scanner input = new Scanner(System.in);  //System.in表示标准化输出,也就是键盘输出
		int num = input.nextInt(); // 接收键盘输入数据

		if (num == 100) {
			System.out.println("奖励一辆BMW");
		}
		
		else if (num > 80 && num < 99) {
	    	System.out.println("奖励一台iphone xs");
		}
		
		else if (num > 60 && num < 80) {
			System.out.println("奖励一个 iPad");
		}
		else {
			System.out.println("没有奖励");
		}
	}
}
  1. 假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。
    1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
    2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
    3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
    4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
    5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。

代码示例:

import java.util.Scanner; // 作用:用来构建Scanner对象
/*
import的作用:

1. 加载已定义好的类或包
2. 导入支持类(可以是JDK基础类或者自己编写的类),可以供本类调用方法和属性。
*/

// 彩票(lottery)游戏
class Lottery {
	public static void main(String[] args) {
		
		// Scanner scan = new Scanner(System.in); // Scanner实例化 / System.in表示标准化输出,也就是键盘输出
		int value = (int)(Math.random() * 90 + 10); // 从[10 , 99]随机取值
		System.out.println("随机数:" + value); 

		System.out.println("请输入一个二位数"); 
		Scanner input = new Scanner(System.in); //System.in表示标准化输出,也就是键盘输出
		int num = input.nextInt(); // // 接收键盘输入数据
		

		int numGe = num/10 , numShi = num%10;
		int valueGe = value/10 , valueShi = value%10;

		if(num == value) {
			System.out.println("奖金10000美元");
		}
		else if(numGe == valueShi && numShi == valueGe) {
			System.out.println("奖金3000美元");
		}
		else if(numGe == valueGe || numShi == valueShi) {
			System.out.println("奖金1000美元");
		}

		else if(numGe == valueShi || numShi == valueGe) {
			System.out.println("奖金500美元");
		}
		else {
			System.out.println("彩票作废");
		}
	
	}
}
  1. 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:高:180cm以上;富:财富1千万以上;帅:是。
    如果这三个条件同时满足,则:“我一定要嫁给他!!!”
    如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
    如果三个条件都不满足,则:“不嫁!”

代码示例:

import java.util.Scanner; // 构建Scanner对象

class Marriage {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	
		System.out.println("身高:(cm)");
		int stature = scan.nextInt();
		System.out.println("财富:(千万)");
		double wealth = scan.nextDouble();
		System.out.println("帅否:(true/false)");
		boolean isHandsome = scan.nextBoolean();

		if(stature > 180 && wealth > 1 && isHandsome) {
			System.out.println("我一定要嫁给他!!!");
		}
		else if(stature > 180 || wealth > 1 || isHandsome) {
			System.out.println("嫁吧,比上不足,比下有余。");
		}
		else {
			System.out.println("不嫁!");
		}

	}
}

知识点:从键盘获取不同类型的标量:需要使用Scanner

  • ① 导包:import java.util.Scanner;
  • Scanner 的实例化:Scanner scan = new Scanner(System.in);
  • ③ 调用 Scanner 类的相关方法(next() / nextXxx()),来获取指定的变量

2. switch-case结构

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

注意:

  • switch (表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
  • case 子句中的值必须是常量,不能是变量名或范围;
    同一个switch语句,所有case子句中的常量值互不相同;
  • break (停止)语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾
  • default 子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default

例题:

1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输出 “other”。
提示:String word = scan.next(); char c = word.charAt(0); switch©{}

代码示例:

import java.util.Scanner;

class Capital {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入a,b,c,d,e:");
		String word = scan.next();
		char c = word.charAt(0);

		switch(c) {
			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;

		}
	}
}

2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

代码示例:

import java.util.Scanner; // 导包,构建Scanner对象

class Grade01 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); // Scanner 实例化
		System .out.println("请输入成绩:");
		int num = scan.nextInt(); // 获取键盘输入数据

		int grade = num/60;
		// 以下为 switch-case 语句
		switch(grade) {
			case 1:
				System.out.println("合格");
			break;
			case 0:
				System.out.println("不合格");
			break;

		}
		
	}
}

3.根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

代码示例:

import java.util.Scanner;

class Senson {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入月份:");
		int num = scan.nextInt();

		switch(num) {
			case 3:
			case 4:
			case 5:
				System.out.print("春季");
			break;
			case 6:
			case 7:
			case 8:
				System.out.print("夏季");
			break;
			case 9:
			case 10:
			case 11:
				System.out.print("秋季");
			break;
			case 12:
			case 1:
			case 2:
				System.out.print("冬季");
			break;
		

		}
	
	}
}
  1. 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序
    输出输入的日期为2019年的第几天

代码示例:

import java.util.Scanner;

class DateText {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入2019年月份:");
		int month = scan.nextInt();
		System.out.println("请输入2019年天数:");
		int day = scan.nextInt();

		// 定义一个变量保存天数
		int SumDays = 0;
		switch(month) {
			case 12:
				SumDays += 30;
			case 11:
				SumDays += 31;
			case 10:
				SumDays += 30;
			case 9:
				SumDays += 31;
			case 8:
				SumDays += 31;
			case 7:
				SumDays += 30;
			case 6:
				SumDays += 31;
			case 5:
				SumDays += 30;
			case 4:
				SumDays += 31;
			case 3:
				SumDays += 28;
			case 2:
				SumDays += 31;
			case 1:
				SumDays += day;
			break;
		
		}
		
		System.out.println((month + "月" + day) + "为2019年的第 " + SumDays + " 天");
	}
}

总结:

  • 对一个变量进行条件判断时,如果既可以使用 if 语句,又可以使用 switch 语句,应优先选择 switch 语句。(switch 语句效率高于 if 语句)
  • if 语句的使用范围更广。因此,使用 switch-case 的,都可以使用 if-else;但使用 if-else 的,不一定可以使用 switch-case
这篇关于Java自学笔记(流程控制-分支结构)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!