第2章_Java基本语法(下):程序流程控制

程序流程控制

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组
合成能完成一定功能的小逻辑模块。
• 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
顺序结构
分支结构
循环结构

顺序结构 程序从上到下逐行地执行,中间没有任何判断和跳转。
分支结构 根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。
循环结构 根据循环条件,重复性的执行某段代码。 有while、do…while、for三种循环语句。 注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素
顺序结构 Java中定义成员变量时采用合法的前向引用。如: public class Test{ int num1 = 12; int num2 = num1 + 2; } 错误形式: public class Test{ int num2 = num1 + 2; int num1 = 12; } 执行语句1 执行语句2 执行语句n … …
2.5.1 程序流程控制:顺序结构
2-5-2 分支语句1: if-else结构
if语句三种格式:

  1. if(条件表达式){ 执行代码块; }
  2. if(条件表达式){ 执行代码块1; } else{ 执行代码块2; }
    条件表达式
    执行代码块
    true
    false 条件表达式
    执行代码块1 执行代码块2
    true false
    2.5.2 程序流程控制:if-else结构
  3. if(条件表达式1){ 执行代码块1; } else if (条件表达式2){ 执行代码块2; } …… else{ 执行代码块n; }
    条件表达式1
    执行代码块1 true 条件表达式2
    执行代码块2
    true
    false
    false
    … … 执行代码块n false
    2.5.2 程序流程控制:if-else结构
     条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量  语句块只有一条执行语句时,一对{}可以省略,但建议保留  if-else语句结构,根据需要可以嵌套使用  当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略  当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓 当多个条件是“包含”关系时,“小上大下 / 子上父下”
    2.5.2 程序流程控制:if-else结构
    分支结构:if-else使用说明
    if-else语句应用举例
    public class AgeTest{ public static void main(String args[]){ int age = 75; if (age< 0) { System.out.println(“不可能!”); } else if (age>250) { System.out.println(“是个妖怪!”); } else { System.out.println(“人家芳龄 " + age +" ,马马乎乎啦!"); } } }

练习题

/*
岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断

说明:

  1. else 结构是可选的。

  2. 针对于条件表达式:

    如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
    如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
    如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面。否则,范围小的就没机会执行了。
    */

import java.util.Scanner;
class IfTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);

  System.out.println("请输入岳小鹏期末成绩:(0-100)");
  int score = scan.nextInt();

  if(score == 100){
  	System.out.println("奖励一辆BMW");//be my wife!  BMW <---> MSN
  }else if(score > 80 &&  score <= 99){
  	System.out.println("奖励一台iphone xs max");
  }else if(score >= 60 && score <= 80){
  	System.out.println("奖励一个 iPad");
  }else{
  	System.out.println("什么奖励也没有");
  }

}

}

/*
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。

说明:

  1. if-else结构是可以相互嵌套的。

  2. 如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略的。但是,不建议大家省略。
    */
    import java.util.Scanner;
    class IfTest2 {
    public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    System.out.println(“请输入第一个整数:”);
    int num1 = scanner.nextInt();
    System.out.println(“请输入第二个整数:”);
    int num2 = scanner.nextInt();
    System.out.println(“请输入第三个整数:”);
    int num3 = scanner.nextInt();

    if(num1 >= num2) //1>2
    if(num3 >= num1)//2 1 3
    System.out.println(num2 + “,” + num1 + “,” + num3);
    else if(num3 <= num2) //321
    System.out.println(num3 + “,” + num2 + “,” + num1);
    else
    System.out.println(num2 + “,” + num3 + “,” + num1);//231

    }else{
    if(num3 >= num2)//123
    System.out.println(num1 + “,” + num2 + “,” + num3);
    else if(num3 <= num1)//312
    System.out.println(num3 + “,” + num1 + “,” + num2);
    else
    System.out.println(num1 + “,” + num3 + “,” + num2);//

    }

    }
    }

笔试题

class IfExer {
public static void main(String[] args) {
int x = 4;
int y = 1;
if (x > 2)
if (y > 2)
System.out.println(x + y);
//System.out.println(“atguigu”);
else //就近原则
System.out.println("x is " + x);

  //课后练习3:测算狗的年龄
  int dogAge = 6;
  if(dogAge >= 0 && dogAge <= 2){
  	System.out.println("相当于人的年龄:" + dogAge * 10.5);
  }else if( dogAge > 2){
  	System.out.println("相当于人的年龄:" + (2 * 10.5 + (dogAge - 2) * 4));
  }else{
  	System.out.println("狗狗还没出生呢!");
  }

  //课后练习4:如何获取一个随机数:10 - 99
  int value = (int)(Math.random() * 90 + 10);// [0.0,1.0) --> [0.0,90.0) --->[10.0, 100.0) -->[10,99]
  System.out.println(value);
  //公式:[a,b]  :  (int)(Math.random() * (b - a + 1) )+ a

}

}

我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每 一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗 相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。

package work.com.cn.entity;

import java.util.Scanner;

public class IfExer {
 public static void main(String[] args) {
     System.out.println("请输入狗狗的年龄(0~100):");
     Scanner scanner = new Scanner(System.in);
     int dogAge = scanner.nextInt();
     if(dogAge <= 2){//狗的前两年每 一年相当于人类的10.5岁
         System.out.println("相当于人类年龄:"+dogAge*10.5);
     }else if(dogAge > 2){//之后每增加一年就增加四岁。那么5岁的狗 相当于人类多少年龄呢?
         System.out.println("相当于男的年龄"+(2*10.5+(dogAge-2)*4));
     }else {
         System.out.println("可爱的狗狗还没有降生呢?");
     }
 }

}


## 结婚判断

> ~~~java 
> /*
> 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
> 高:180cm以上;富:财富1千万以上;帅:是。
> 如果这三个条件同时满足,则:“我一定要嫁给他!!!”
> 如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
> 如果三个条件都不满足,则:“不嫁!”
> 
> */
> 
> import java.util.Scanner;
> 
> class Marry {
> 	public static void main(String[] args) {
> 		
> 		Scanner scan = new Scanner(System.in);
> 		
> 		System.out.println("请输入你的身高:(cm)");
> 		int height = scan.nextInt();
> 		System.out.println("请输入你的财富:(千万)");
> 		double wealth = scan.nextDouble();
> 
> 		/*
> 		方式一:
> 		System.out.println("请输入你是否帅:(true/false)");
> 		boolean isHandsome = scan.nextBoolean();
> 
> 		if(height >= 180 && wealth >= 1 && isHandsome){
> 			System.out.println("我一定要嫁给他!!!");
> 		}else if(height >= 180 || wealth >= 1 || isHandsome){
> 			System.out.println("嫁吧,比上不足,比下有余。");
> 		}else{
> 			System.out.println("不嫁!");
> 		}
> 		*/
> 
> 		//方式二:
> 		System.out.println("请输入你是否帅:(是/否)");
> 		String isHandsome = scan.next();
> 
> 		
> 		if(height >= 180 && wealth >= 1 && isHandsome.equals("是")){
> 			System.out.println("我一定要嫁给他!!!");
> 		}else if(height >= 180 || wealth >= 1 || isHandsome.equals("是")){
> 			System.out.println("嫁吧,比上不足,比下有余。");
> 		}else{
> 			System.out.println("不嫁!");
> 		}
> 	}
> }
> 
> ~~~
>
> 



## switch-case结构的基本使用

> switch(表达式){ 
>
> case 常量1: 
>
> 语句1
>
> ; // break;
>
>  case 常量2: 
>
> 语句2; 
>
> // break; … … 
>
> case 常量N: 
>
> 语句N; //
>
>  break;
>
>  default: 语句;
>
>  // break;
>
>  } 
>
> ~~~java 
> package work.com.cn.entity;
> /*
> 分支结构之二:switch-case
> 
> 1.格式
> switch(表达式){
> case 常量1:
> 	执行语句1;
> 	//break;
> 
> case 常量2:
> 	执行语句2;
> 	//break;
> 
> ...
> default:
> 	执行语句n;
> 	//break;
> 
> }
> 2.说明:
> ① 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。
>   当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构
>   末尾结束为止。
> 
> ② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构
> 
> ③ switch结构中的表达式,只能是如下的6种数据类型之一:
>    byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
> 
> ④ case 之后只能声明常量。不能声明范围。
> 
> ⑤ break关键字是可选的。
> 
> ⑥ default:相当于if-else结构中的else.
>   default结构是可选的,而且位置是灵活的。
> */
> public class SwitchCase {
>     public static void main(String[] args) {
>         int number =1;
>         switch(number){
>             case 0:
>                 System.out.println("zero");
>             case 1:
>                 System.out.println("one");
>                 break;
>             case 2:
>                 System.out.println("two");
>                 break;
>             case 3 :
>                 System.out.println("third");
>                 break;
>             default:
>         }
>     }
> }
> 
> ~~~
>
> 
>
> ### 练习题
>
> 1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输 出 “other”

```1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输 出 “other”
package work.com.cn.entity;

import java.util.Scanner;
//1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输 出 “other”。
public class SwitchChar {
    public static void main(String[] args) {
        System.out.println("请输入值你想要的值");
        Scanner scanner = new Scanner(System.in);
        //键盘上不能输入char类型的数据,只能通过输入字符串的形式,截取第一个字符来实现
        char charValue = scanner.next().charAt(0);
        switch (charValue) {
            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;

        }
    }
}
```

~~~java
/*
例题:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。
*/
class SwitchCaseTest1 {
	public static void main(String[] args) {
		
		/*
		int score = 78;
		switch(score){
		case 0:

		case 1:

		case 2:

			...
		case 100:
		
		}
		*/

		/*
		int score = 78;
		if(score >= 60){
		
		}else{
		
		}
		*/
		
		int score = 78;
		switch(score / 10){
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("不及格");
			break;
		case 6:
		case 7:
		case 8:
		case 9:
		case 10:
			System.out.println("及格");
			break;

		}
		
		//更优的解决方案:
		switch(score / 60){
		case 0:
			System.out.println("不及格");
			break;
		case 1:
			System.out.println("及格");
			break;
		}
	
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值