JavaSE基础复习巩固

第二天:复习if语句,扫描器,switch语句,循环语句

1.if语句---流程控制语句

if之前学的语句是顺序结构

1.1 单个if的语法结构

if(条件判断){

满足条件需要做的事情;

}

int a=11;

if(a>1){

System.out.println("成功");

}

单个if语句的缺点:单个if语句都是相互独立的,每一个单个的if语句他都会进行判断,会消耗cpu的执行时间,降低执行效率。

1.2 if.....else语法结构

if(条件判断){

满足条件需要做的事情;

}else{

不满足条件需要做的事情;

}

if....else存在的目的:

1.单个的if一次只能进行一个条件判断,而if....else一次可以同时进行两个条件判断

2.if....else执行效率比单个的if语句要高些(当if中条件满足时,else就不会再去消耗cpu的执行时间(也就是当if条件满足时,else不会执行了))

1.3 多重if语句

if(条件判断1){

满足条件1要做的事情;

}else if(条件判断2){

满足条件2要做的事情;

}...

else if(条件判断n){

满足条件n要做的事情;

}else{

不满足条件需要做的事情;

}

问题:多重if语句中的else能够省略吗?

在有返回值的方法中多重if的esle是不能省略的,其他情况可以省略

多重if语句当某个条件满足时,后面的条件就不会执行了

1.4 if语句的嵌套(if语句中写if语句)

2.扫描器(键盘录入)

作用:从键盘中自己手动输入数据,你需要什么数据你自己通过键盘直接输入即可。

使用扫描器的步骤:

1.导入扫描器

import java.util.Scanner;

2.生成扫描器对象

Scanner scanner = new Scanner(System.in);

3.接收键盘输入的数据

int a=scanner.nextInt();

例子:

Scanner scanner = new Scanner(System.in);

System.out.print("请输入您的成绩");

int a=scanner.nextInt();

if(a>=90&&a<=100){

System.out.println("优秀");

}else if (a>=60&&a<=89){

System.out.println("及格");

}else{

System.out.println("不及格");

}

3.switch选择语句

语法结构

switch(变量){

case 变量值1:

变量等于变量值1时需要做的事情;

break;//退出整个程序

case 变量值2:

变量等于变量值3时需要做的事情;

break;

case 变量值3:

变量等于变量值3时需要做的事情;

break;

...

case 变量值n:

变量等于变量值n时需要做的事情;

default:

最终需要做的事情;

}

例子:

  System.out.println("请输入星期数:");
        int a1=scanner.nextInt();
        switch (a1){
            case  1:
                System.out.println("星期一");
                 break;
            case  2:
                System.out.println("星期二");
                break;
            case  3:
                System.out.println("星期三");
                break;
            case  4:
                System.out.println("星期四");
                break;
            case  5:
                System.out.println("星期五");
                break;
                case  6:
                System.out.println("星期六");
                break;
            case  7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("您输入的数据有错误,请重新输入");

switch注意细节:

1.每一个case代表的就是一种情况,case结束之后必须交break,否则会出现代码穿透现象。

2.变量的取值

在jdk1.5之前 只能取 byte short char int

jdk1.5 加了 枚举以及byte short char int的包装类

在jdk1.7加了 String

3.case后面的break不能省略,否则会出现代码穿透现象

4. default位置是否可以发生变化的,default可以在switch语句中的任意位置,也可以省略

注意:如果不是放在末尾,则要加break,否则也会出现代码穿透现象

5.switch什么时候结束?

1.碰到break

2.碰到 }

6.switch与多重if语句有什么样的区别?

多重if语句一般用于区间的判断,switch一般用于选择性判(变量对应具体的某一个值)

练习题:请从键盘输入月份(1-12)数字,打印出对应的季节?提示:可以用到switch穿透

扩展:求三个数字中的最大值?

//三个数求其中最大的数字

int a=11;

int b=22;

int c=33;

int max=a;//首先假设a为最大值

if (b>max){//如果b大于最大数 这时候最大值是a

max=b;//把b的值赋值给max

}

if (c>max){//c大于最大值 这时候最大值是b

max=c;//把c的值赋值给max

}

System.out.println("最大值:"+max);

4.循环语句

循环含义:反复做同一件事情 例如:围着操场跑10圈....

循环的三要素:1.变量的初始化,2.条件判断,3. 变量改变情况

4.1.while循环

语法结构:

1循环变量的初始化

while(2条件判断){

循环体;

循环变量的改变;

}

细节:循环变量的改变是避免死循环的发生

例子:int a=0;

while(a<10){

System.out.println("这是"+a);

a++;

}

练习题:求0-100的偶数

//求0-100的偶数
        int i=0;
        while(i<=100){
            if (i%2==0){//求奇数的话就是i%2!=0就ok了
                System.out.println("0-100的偶数有:"+i);
            }
            i++;
        }

while循环结束之后,循环变量还能继续使用吗?答案:可以的

while循环的执行流程:

1. 循环变量的初始化---循环条件判断---循环体---循环变量的改变

2.循环条件判断---循环体---循环变量的改变

3.循环条件判断---循环体---循环变量的改变

.....直到循环结束

4.2do...while循环

1循环变量的初始化

do{

循环体;

3循环变量的改变;

}while(2条件判断);

do...while循环结束之后,循环变量还能继续使用吗?答:可以的

do while循环的执行流程:

1.循环变量的初始化----循环体-----循环变量的改变---循环条件的判断

2. 循环体-----循环变量的改变---循环条件的判断 * 3循环体-----循环变量的改变---循环条件的判断

...直到循环结束

dowhile跟while循环相比有一个明显的特点:

当初始化变量不满足条件时,循环体也会执行一次(先斩后奏)

4.3for循环

语法结构:

for(1.变量初始化,2.条件判断3.变量改变的情况){

循环体;

}

例子:for(int i=0;i<10;i++){

System.out.println("这是"+i);

}

for循环结束之后,循环变量还能继续使用吗?答:不可以的

因为for循环的循环变量的作用域(作用范围)是局部变量,循环变量的作用范围只在这一对{ }中有效。

注意:for循环的循环变量在循环结束之后,会被垃圾回收器自动回收。节省内存空间。

for循环 执行流程:

1.循环变量的初始化---循环条件判断-----循环体----变量的改变

2.循环条件判断-----循环体----变量的改变

3.循环条件判断-----循环体----变量的改变

...直到循环结束

while do..while for循环三者之间的区别:

1.while dowhile循环的循环变量在循环结束之后能够继续使用,而for循环在循环结束之后,循环变量被垃圾回收器自动清除了, 不能再继续使用.

2.while for循环必须满足条件才会执行循环体, 而dowhile循环就算不满足条件,也会执行一次循环体。

练习题

 //求10000-99999之间的回文数(例如12321就是一个回文数) (for  if求)  for循环里面嵌套if   条件;个位==万位&&十位==千位
          int count=0;
        for (int i = 10000; i <99999 ; i++) {
            //先求出个位,十位和百位,千位,万位
            int gw=i/1%10;
            int sw=i/10%10;
            int bw=i/100%10;
            int qw=i/1000%10;
            int ww=i/10000%10;
            if (gw==ww&&sw==qw){
                System.out.println("回文数:"+i);
            }
        }
 //求100-999的水仙花数 (例如:1*1*1+5*5*5+3*3*3=153 这就是一个水仙花数)条件:百位*百位*百位+十位*十位*十位+个位*个位*个位=百十个
        for (int j = 100; j <1000 ; j++) {
            //先求出个位,十位和百位
            int gw=j/1%10;
            int sw=j/10%10;
            int bw=j/100%10;
            //条件判断
            if(gw*gw*gw+sw*sw*sw+bw*bw*bw==j){
                System.out.println("水仙花数:"+j);
            }
        }
 //求1900-2021中的闰年 例如:year%4==0&&year%100!=0||year%400==0时,这个就是闰年
        for (int year=1900;year<=2021;year++){
            if(year%4==0&&year%100!=0||year%400==0){
                System.out.println("闰年:"+year);
            }
        }

嵌套for循环(for循环里面嵌套for循环)

外循环和内循环之间有什么关系?

没执行一次外循环,内循环要执行完。

 练习题:打印九九乘法表

    //打印九九乘法表
        //外层控制行数
        for (int i = 1; i <=9 ; i++) {
            //内层输出内容
            for (int j = 1; j <=i ; j++) {
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println();
        }

扩展知识:累加思想

习题:求0-100的总和

 1   //累加思想  例题:求1-100的和
 2         int sum=0;
 3         for (int k = 1; k <=100 ; k++) {
 4             sum+=k;//sum=sum+k 第一次: sum=0+1 第二次:sum=1 sum=1+2 第三次:sum=3 sum=3+3 以此类推....
 5         }
 6         System.out.println("sum="+sum);
 7         double sum1=0;
 8         for (int i = 1; i <=10 ; i++) {
 9             sum1+=1.0/i;
10 //            sum1=sum1+1.0/i;
11         }
12         System.out.println("sum1="+sum1);

综合练习:在控制台循环输入五个学生的成绩,求其最大值,最小值和总和?

 1  //循环输入5个学生的成绩,求其最大值,最小值以及总成绩?
 2         int max=0;
 3         int min=100;
 4         int sum=0;
 5         Scanner sc = new Scanner(System.in);
 6         for (int i = 1; i <=5 ; i++) {
 7             System.out.println("请输入第"+i+"个学生成绩:");
 8             int j = sc.nextInt();
 9             if (max<j){
10                 max=j;
11             }
12             if (j<min){
13                 min=j;
14             }
15             sum+=j;
16         }
17         System.out.println("最大值:"+max);
18         System.out.println("最小值:"+min);
19         System.out.println("sum="+sum);

5.随机器:Random

作用:用来产生随机数的

如何使用随机器产生随机数(三个步骤)

1.导入随机器

import java.util.Random;

2.生成随机器对象

Random rd=new Random();

//程序中真正用到随机器 rd

3.产生随机数

int a=rd.nextInt();

学习感受:今天是复习JavaSE的第二天,JavaSE基础部分我打算复习15天左右的时间,学习Java技术这条路真的很难很累,学的内容很多,尤其是你只有一个人之间学习的时候,如果你能找到能跟你志同道合和一起学习java的小伙伴那是极好的,可以跟小伙伴再一起学习,交流,分享心得等等......希望自己不要方向这条路,既然自己选择了这条路,就要坚定的走下去,那怕头破血流,当然这说的有些夸张,但是这种决心还是要有的,毕竟是自己选择的。走出来选择就去坚持把,加油!!!一起去学Java的小伙伴。最后想送一句我很喜欢的名言:路漫漫其修远兮,吾将上下而求索。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值