JAVA if语句

概述

在之前学习的程序,都是 顺序执行,根据编写的顺序,从上到下运行,如下:

 public static void main(String[] args){
     System.out.println(1); 
     System.out.println(2); 
     System.out.println(3);
}

提出问题:
输入分数,如果分数大于90,打印优;大于80,打印良;大于70,打印中;大于60,打印差,小于60,打印不及格

这种问题,上面的语句将无法实现

条件语句(判断语句、if语句)

格式

if(关系表达式){ 
    语句体(块);
}

执行流程:

  • 首先执行关系表达式,看其结果是 true 还是 false
  • 如果是 true 就执行语句体
  • 如果是 false 就不执行语句体

例子:

    System.out.println("开始");
    // 定义两个变量
    int a = 10; 
    int b = 20;
    //变量使用if判断
    if (a == b){
        System.out.println("a等于b");
    }
    int c = 10; 
    if(a == c){
        System.out.println("a等于c");
    }
    System.out.println("结束");

if…else 语句

格式

if(关系表达式) { 
   语句体1;
}else { 
   语句体2;
}

执行流程:

  • 首先判断关系表达式看其结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就执行语句体2

例子:

public static void main(String[] args){ 
    // 判断给定的数据是奇数还是偶数
    // 定义变量
    int a = 1;
    if(a % 2 == 0) { 
        System.out.println("a是偶数");
    } else{ 
        System.out.println("a是奇数");
    }
    System.out.println("结束");
 }

if…else语句 VS 三元运算符

if语句是可以和三元运算符互换使用的。

public static void main(String[] args) { 
    int a = 10;
    int b = 20; //定义变量,保存a和b的较大值 
    int c;
    if(a > b) {
      c = a;
     } else {
      c = b;
     }
    //可以上述功能改写为三元运算符形式
     c = a > b ? a:b;
 }

if..else if…else 语句

格式

if (判断条件1) {
    执行语句1;
} else if (判断条件2) { 
    执行语句2;
}
...
} else if (判断条件n) {
    执行语句n;
} else {
    执行语句n+1;
}

执行流程:

  • 首先判断关系表达式1看其结果是true还是false
  • 如果是true就执行语句体1
  • 如果是false就继续判断关系表达式2看其结果是true还是false
  • 如果是true就执行语句体2
  • 如果是false就继续判断关系表达式…看其结果是true还是false
  • …
  • 如果没有任何关系表达式为true,就执行语句体n+1。

例子

int x = 30;
if( x == 10 ){
    System.out.print("语句块1");
}else if( x == 20 ){
    System.out.print("语句块2");
}else if( x == 30 ){
    System.out.print("语句块3");
}else{
    System.out.print("语句块4");
}

运算过程:

练习

输入成绩,判断成绩等级:

  • 90-100 优秀
  • 80-89 好
  • 70-79 良
  • 60-69 及格
  • 60以下 不及格
System.out.println("请输入成绩:");
Scanner scanner=new Scanner(System.in);
int score=scanner.nextInt();
if(score<0 || score>100){
System.out.println("成绩错误,请输入0-100之间的数字");
}else if(score>=90){
System.out.println("优");
}else if(score>=80 ){
System.out.println("良");
}else if(score>=70){
System.out.println("中");
}else if(score>=60){
System.out.println("及格");
}else {
System.out.println("不及格");
}

if语句嵌套

if语句里面还可以是if语句

练习

假设某航空公司为吸引更多的顾客推出了优惠活动。原来的飞机票价为 3000 元,活动时,4~11 月旺季,头等舱 9 折,经济舱 8 折;1~3 月、12 月淡季,头等舱 5 折,经济舱 4 折,求机票的价格。

Scanner sc = new Scanner(System.in);
System.out.println("请输入出行的月份:");
int month = sc.nextInt();
System.out.println("选择头等舱还是经济舱?数字1为头等舱,数字2为经济舱");
int kind = sc.nextInt();
// 原始价格
double price = 3000;
double result=0;
// 旺季的票价计算
if (4 <= month && month <= 11 ) {
    if (kind == 1) { // 旺季头等舱
        result = price * 0.9;
    } else if (kind == 2) { // 旺季经济舱
        result = price * 0.8;
    } else {
        System.out.println("选择种类有误,请重新输入!");
    }
}
// 淡季的票价计算
else if ((1 <= month && month <= 3) || month == 12) {
    if (kind == 1) { // 淡季头等舱
        result = price * 0.5;
    } else if (kind == 2) { // 淡季经济舱
        result = price * 0.4;
    } else {
        System.out.println("选择种类有误,请重新输入!");
    }
} else {
    System.out.println("日期选择有误,请重新输入!");
}
System.out.println("您选择的机票价格为:" + result);

原文出处:/show_1EF4r6fsbc9M.html