java | 练习题(五)

列了一些幼稚园水平的 if-else 练习题

Posted by Haauleon on September 13, 2020

笔记

一、从键盘获取不同类型的变量:使用 Scanner 类

具体实现步骤:
1.导包:import java.util.Scanner

  1. Scanner 类的实例化:Scanner scan = new Scanner(System.in)
    3.调用 Scanner 类的相关方法:next() / nextXxx() 来获取指定类型的变量


二、注意: 主要根据相应的方法来输入指定的类型,如果输入的数据类型与方法要求的类型不匹配时 (如方法为 nextInt() 而输入的是浮点型常量 13.14),则抛出异常:InputMisatchException


三、if-else 分支结构说明
① else 结构是可选的。
② 针对于条件表达式:
  如果多个条件表达式是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
  如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
  如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面,否则,范围小的就没机会执行了。
③ if-else 结构是可以相互嵌套的。
④ 如果 if-else 结构中的执行语句只有一行时,对应的一对 {} 可以省略的。但是,不建议省略。



复习题

1.从键盘输入一个整数,然后判断。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;

class ScannerTest{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("please input your grade: ");
        int grade = scan.nextInt();
        if (grade == 100) {
            System.out.println("BMW!");
        }else if (grade > 80 && grade <= 99) {
            System.out.println("iphone!");
        }else if (grade >= 60 && grade <= 80) {
            System.out.println("405!");
        }else{
            System.out.println("next time!");
        }
    }
}



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


又来献丑了,这玩意一千个人就有一千个哈姆雷特,代码也不例外。我这逻辑也是醉醉的,刚测试过,还没有特别明显的 bug,除了没做输入异常处理之外。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
三个数从小到大排序,一共有 3 * 2 * 1 = 6 种排序方式
我的思路就是:一个一个对比,啊哈哈哈
*/

import java.util.Scanner;

class SortTest{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.print("please input: ");
        int num1 = scan.nextInt();
        int num2 = scan.nextInt();
        int num3 = scan.nextInt();
        if (num1 <= num2) {
            if (num1 <= num3) {
                if (num2 <= num3) {
                    System.out.println(num1 + " " + num2 + " " + num3);
                }else if (num3 <= num2) {
                    System.out.println(num1 + " " + num3 + " " + num2);
                }
            }else if (num1 >= num3) {
                System.out.println(num3 + " " + num1 + " " + num2);
            }
        }else{ // num1 > num2
            if (num1 >= num3) {
                if (num2 >= num3) {
                    System.out.println(num3 + " " + num2 + " " + num1);
                }else if (num3 >= num2) {
                    System.out.println(num2 + " " + num3 + " " + num1);
                }
            }else if (num1 <= num3) {
                System.out.println(num2 + " " + num1 + " " + num3);
            }
        }
    }
}



3.我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每一年相当于人类的10.5岁,之后每增加一年就增加4岁。那么5岁的狗相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人类的年龄。如果用户输入负数,请显示一个提示信息。


这程序几分钟就写好了,但还是败在了没有加分号,心塞塞。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
这个就是玩校验的,谁考虑得越多就不容易被测试同学测出 bug
*/

import java.util.Scanner;

class AgeTest{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.print("please input dog's age: ");
        int age = scan.nextInt();
        if (age < 0) {
            System.out.println("Error input!");
        }else if (age == 0) {
            System.out.println("There is no full moon!");
        }else{
            if (age < 1) {
                System.out.println("Human age < 10.5");
            }else if (age == 1) {
                System.out.println("Human age == 10.5");
            }else if ((age > 1) && (age < 2)) {
                System.out.println("Human age < 21");
            }else if (age == 2) {
                System.out.println("Human age == 21");
            }else if (age > 2) {
                System.out.println("Human age == " + (2*10.5 + (age-2)*4));
            }
        }
    }
}