Java学习6:控制语句:if语句

接收用户键盘输入

输出信息到控制台:System.out.println();
在java中怎么接收键盘的输入呢?
前提:java.until.Scanner s = new java.until.Scanner(System.in);
接受一个整数:int num = s.nextInt();
接受一个字符串:String str = s.next();

public class KeyInput{
    public static void main(String[] args){
        //创建一个键盘扫描器对象
        //s只是一个变量名,可以修改
        java.until.Scanner s = new java.until.Scanner(System.in);//这行代码写一次就行了。
        //接受用户的输入,从键盘上接收一个int类型的数据
        //代码执行到这里的时候,会暂停下来,等待用户的输入,
        //用户可以从键盘上输入一个整数,然后回车,回车之后
        //userInputNum变量就有值了。并且userInputNum变量中保存的这个值是用户输入的变量。
        int userInputNum = s.nextInt();//userInputNum这只是个变量名,用来接收用户输入的数据的。
        System.out.println("您输入的数字是:" + userInputNum);
        //代码执行到此处又会停下来,等待用户输入
        //敲完回车,s.nextInt();代码执行结束。
        int i = s.nextInt();//i是变量名,s是上边定义的变量名。
        System.out.println("您输入的数字是:" + userInputNum);
        //如果输入的不是数字,那么会出异常:InputMismatchException(输入不匹配)
        //那么怎么从键盘上接收一个字符串呢?
        //程序执行到此处会停下来,等待用户输入,用户可以输入字符串
        String str = s.next();
        System.out.println("您输入了:" + str)
    }
}

接收用户键盘输入import形式

import java.until.Scanner;

//更有交互性
public class KeyInput{
    public static void main(String[] args){
        //创建一个键盘扫描器对象
        Scanner s = new Scanner(System.in);
        //输出一个信息
        System.out.println("欢迎使用小型迷你计算器");
        System.out.print("请输入第一个数字:" + num1);
        int num1 = s.nextInt();
        System.out.print("请输入第二个数字:" + num2);
        int num2 = s.nextInt();
        System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));
}

控制语句分类

控制语句的出现可以让我们的程序具有逻辑性/条理性,可以使用控制语句来实现一个“业务”了。
分类:3类
选择语句(或叫做分支语句):if语句、switch语句
循环语句(主要循环反复的去执行某段特定的代码块):for循环、while循环、do...while循环
转向语句:break、continue、(return,后面讲方法的时候会使用)

选择语句/分支语句if

if语句的语法格式及原理

if语句是分支语句,也可以叫做条件语句。
if 这个单词翻译为如果,所以又叫做条件语句。
if语句的语法格式:

第一种写法:

if(布尔表达式) {
  java语句;
  java语句;
}

这里的一个大括号 {} 叫做一个分支。
执行原理:如果布尔表达式的结果是true,则执行大括号中的程序,否则大括号中代码不执行。
第二种写法:

if(布尔表达式){    //分支1
  java语句;
}else{                  //分支2
  java语句
}

执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行。如果布尔表达式的结果是false,执行分支2,分支1不执行。
这种写法可以保证一定会有一个分支执行。

第三种写法:

if(布尔表达式1){             //分支1
  java语句;
}else if(布尔表达式2){    //分支2
  java语句;
}else if(布尔表达式3){    //分支3
  java语句;
}......

执行原理:先判断布尔表达式1,如果布尔表达式1为true,则执行分支1,然后if语句结束了。如果布尔表达式1的结果是false,那么会继续判断布尔表达式2的结果,如果布尔表达式2的结果是ture,则执行分支2,然后整个if就结束了。如果布尔表达式2的结果为false,那么会继续判断布尔表达式3的结果,以此类推......
从上往下依次判断,主要看第一个true发生在哪个分支上。第一个true对应的分支执行,只要一个分支执行,整个if结束。

第四种写法:

if(布尔表达式1){             //分支1
  java语句;
}else if(布尔表达式2){    //分支2
  java语句;
}else if(布尔表达式3){    //分支3
  java语句;
}else{                            
  java语句;                    //以上条件没有成立的,这个else就执行了。
}

注意:
1.在if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。if语句中只要1个分支执行了,整个if语句就结束了。(对于1个完整的if语句来说的。)
2.以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行。以上4种当中,第一种和第三种没有else分支,这样的语句,可能会导致最后一个分支都不执行。
3.当分支当中”java语句“只有一条,那么大括号可以省略,但为了可读性,最好不要省略。(有的程序员在编写代码的时候,可能会故意将大括号省略,能看懂就行。)

if语句嵌套的理解

控制语句和控制语句之间是可以嵌套的,但是嵌套的时候大家最好一个语句一个语句进行分析,不冗杂在一起分析。
小窍门:分析外面if语句的时候,里面的其他语句,看成一堆java代码就可以了。

if案例

public class Test{
    public static void main(String[] args){
    //定义一个布尔类型的变量,表示性别。
    boolean sex = ture;
    //业务:当sex为true时表示男,为false时表示女。
    if(sex == ture){
        System.out.println("男");
    }else{
        System.out.println("女");
    }
    }
}

这样编写太low,可以进行改良。
sex已经定义为布尔类型了,就可以这么改。改良结果如下:

public class Test{
    public static void main(String[] args){
    boolean sex = ture;
    if(sex){
        System.out.println("男");
    }else{
        System.out.println("女");
    }
    }
}

使用三目运算符,可以进一步改良。改良结果如下

public class Test{
    public static void main(String[] args){
    boolean sex = ture;
    System.out.println(sex ? "男" : "女")
    }
}

以下的代码为什么可以这样写呢?

public class Test{
    public static void main(String[] args){
    boolean sex = ture;
    if(sex = ture){  //以前sex不管是true还是false,到这里,sex一定是true。
        System.out.println("男");
    }else{
        System.out.println("女");
    }
    }
}

因为小括号当中最终取的值时sex变量的值,而sex变量是布尔类型,所以这个可以通过。但是这样得话,sex的值始终为true,因为你已经把true赋值给了sex,哪怕是重新定义了sex,sex的结果还是true。虽然这种语法可以,但是会导致else分支永远不能执行。

if语句的大括号省略

public class Test{
    public static void main(String[] args){
    boolean sex = ture;
    if(sex)
        System.out.println("男");
    else
        System.out.println("女");
    }
}

以上这个是没有任何问题的。

public class Test{
    public static void main(String[] args){
    boolean sex = ture;
    if(sex)
        System.out.println("男");
                System.out.println("HelloWorld!");//以上这三行代码没有任何问题,合乎语法。
    //else//这一行编译报错,else缺少if
    //  System.out.println("女");
    }
}

if语句根据年龄判断生命阶段

业务要求:
1.从键盘上接收一个人的年龄。
2.年龄要求为【0-150】,其它值表示非法信息。
3.根据人的年龄来动态判断这个人属于生命的哪个阶段。
[ 0-5 ] 婴幼儿
[ 6-10 ] 少儿
[ 11-18 ] 少年
[ 19-35 ] 青年
[ 36-55 ] 中年
[ 56-150 ] 老年
4.请使用if语句完成以上的业务逻辑。

public class Test1{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请您输入年龄:");
        int age = s.nextInt();
        if(age < 0 || age > 150){
        System.out.println("对不起,年龄值不合法");
        }else{
            if(age <=5 ){
                System.out.println("婴幼儿");
            }else if(age <= 10){
                System.out.println("少儿");
            }else if(age <= 18){
                System.out.println("少年");
            }else if(age <= 35){
                System.out.println("青年");
            }else if(age <= 55){
                System.out.println("中年");
            }else{
                System.out.println("老年");
            }

        }
    }
}

以上代码运用了if嵌套,也可以不用嵌套来做。

public class Test1{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请您输入年龄:");
        int age = s.nextInt();
        if(age < 0 || age > 150){
        System.out.println("对不起,年龄值不合法");
        }else if(age <=5 ){
                    System.out.println("婴幼儿");
        }else if(age <= 10){
                System.out.println("少儿");
        }else if(age <= 18){
                System.out.println("少年");
        }else if(age <= 35){
                System.out.println("青年");
        }else if(age <= 55){
                System.out.println("中年");
        }else{
                System.out.println("老年");
        }
    }
}

进一步改良

public class Test1{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请您输入年龄:");
        int age = s.nextInt();
                String str = "老年";//字符串变量默认值是"老年"。
        if(age < 0 || age > 150){
        System.out.println("对不起,年龄值不合法");//既然不合法,就不要往下继续执行了。
                return;//终止程序
        }else if(age <=5 ){
                    str = "婴幼儿";
        }else if(age <= 10){
                str = "少儿";
        }else if(age <= 18){
                str = "少年";
        }else if(age <= 35){
                str = "青年";
        }else if(age <= 55){
                str = "中年";
        }
              System.out.println(str);
    }
}

当然还有其他写法,还需要自己挖掘,慢慢学习的过程中去发现,去改良。

if根据成绩判断等级

业务要求:
1.系统接收一个学生的考试成绩,根据考试成绩纯输出成绩的等级。
2.等级:
优秀:90-100
良好:80-90(不包括90)
中等:70-80(不包括80)
及格:60-70(不包括70)
不及格:0-60(不包括60)
3.要求成绩是一个合法的数字,成绩必须在0-100之间,成绩可能带有小数。

可以参考上面的生命阶段的案例,可以写出很多种。这里只给出一种写法。

public class Test1{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请您输入学生成绩:");
        double chengJi = s.nextDouble();
        if(chengJi < 0 || chengJi > 100){
            System.out.println("对不起,您输入的成绩无效");
        }else if(chengJi < 60 ){
                System.out.println("不及格");
        }else if(chengJi < 70){
                System.out.println("及格");
        }else if(chengJi < 80){
                System.out.println("中等");
        }else if(chengJi < 90){
                System.out.println("良好");
        }else {
                System.out.println("优秀");
        }
    }
}

if案例

业务:从键盘上接收天气的信息:1表示雨天,0表示晴天。同使从键盘上接收性别的信息:1表示男,0表示女。
业务要求:天气为雨天时男生打一把大黑伞,女打一把小花伞。天气为晴天时,男生直接出去玩,女生擦点防晒出去玩。
需要使用if语句以及嵌套的方式展现这个业务。

import java.util.Scanner;

public class TianQi{
    public static void main(String[] args){
        Scanner weather = new Scanner(System.in);
        System.out.print("请输入天气信息1或0(雨天/晴天):");
        int tianQi = weather.nextInt();
        Scanner sex = new Scanner(System.in);
        System.out.print("请输入性别信息1或0(男生/女生):");
        int xingBie = sex.nextInt();
        if(tianQi == 1){
            if(xingBie == 1){
                System.out.println("男生,雨天打一把大黑伞");
            }else{
                System.out.println("女生,雨天打一把小花伞");
            }
        }else{
            if(xingBie == 1){
                System.out.println("男生,晴天直接出门玩耍");
            }else{
                System.out.println("女生,晴天擦点防晒出门玩耍");
            }
        }
        System.out.println("希望您玩的开心!");
    }
}
天气.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。