笔记
一、从键盘获取不同类型的变量:使用 Scanner 类
具体实现步骤:
1.导包:import java.util.Scanner
- 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));
}
}
}
}