Java SE基础篇(三)

数据输入

Scanner使用的基本步骤

①导包

1
2
import java.util.Scanner;
//导包必须出现在类定义上面

②创建对象

1
Scanner sc=new Scanner(System.in);

③接收数据

1
int i = sc.nextInt();

案例:从键盘获取三个数,用三元运算符来比较最大值,输出结果

1
2
3
4
5
6
7
8
9
Scanner in=new Scanner(System.in);
int num[] = new int[3];
for(int i=0;i<=2;i++){
System.out.println("请输入第"+(i+1)+"个数");
num[i]=in.nextInt();
}
int temp=num[0]>num[1]?num[0]:num[1];
int max=temp>num[2]?temp:num[2];
System.out.println("最大值为:"+max);

顺序结构

最基本的流程控制,没有特定的语法结构,按照代码的先后顺序依次执行。

if语句

  • 格式一
1
2
3
4
if(关系表达式){   
//关系表达式值为true就执行与具体,为false就不执行,继续执行if后的语句
语句体;
}
  • 格式二

    1
    2
    3
    4
    5
    if(关系表达式){   
    语句体1
    }else{
    语句体2
    }
  • 格式三

    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(关系表达式){   
    语句体1
    }else if(关系表达式){
    语句体2
    }
    ······
    else{
    语句体n+1
    }

案例

输入年份判断是闰年还是平年?

  • 普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。(如2004、2020年就是闰年);
  • 世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年);
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class day3 {
    public static void main(String[] args) {
    System.out.println("请输入年份:");
    Scanner sc=new Scanner(System.in);
    String ss=sc.nextLine();
    int year=Integer.parseInt(ss); //转换成整数
    if(year%400==0 || (year%4==0 && year%100!=0)){
    System.out.println(year+"年是闰年");
    }else{
    System.out.println(year+"年是平年");
    }
    }
    }

    switch语句

    格式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    switch(表达式){
    case1:
    语句体1;
    break;
    case2:
    语句体2;
    break;
    ······
    default:
    语句体n+1;
    [break;] //可选
    }
    执行流程:

①首先计算表达式的值

②依次和case后的值比较,如果有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束。

③如果所有的case后面的值和表达式值都不匹配,就会执行default里的语句体,然后程序结束掉。

例题

1、若a和b均是整型变量并已正确赋值,正确的switch语句是( )。

A) switch(a+b);{ …… } B) switch( a+b*3.0 ) { …… }

C) switch a { …… } D) switch ( a%b ) { …… }

2、下面语句运行结果为:()

1
2
3
4
5
6
7
8
9
10
11
12
switch (5) {
default:
System.out.print(5);
case 0:
System.out.print(0);
case 1:
System.out.print(1);
break;
case 2:
System.out.print(2);
break;
}

A) 1 B) 5 C) 0 D) 501

3、下列语句序列执行后,k 的值是( )。

1
2
3
4
5
6
7
8
9
10
11
12
int i = 10, j = 18, k = 30;
switch (j - i) {
case 8:
k++;
case 9:
k += 2;
case 10:
k += 3;
default:
k /= j;
}
System.out.println(k);

A) 31 B) 32 C) 2 D) 33

答案

1、D

分析:A.switch(); 后面多了个分号 B.switch(常量表达式),括号里面的表达是的值只能为:byte short int char 或者enum类型,但a+b*3.0 是double类型
C.()漏了

2、D

分析:switch-case中,default分支如果写在前面或中间的话要加break语句,否则执行完default分支后,才会继续往下执行,直到遇到break语句

3、C

分析:case分支中没有break;语句会继续往下执行,知道遇到break;语句,或者遇到default:分支才结束

思维导图

Java EE思维导图

请我喝杯咖啡吧~

支付宝
微信