流程控制(内含scanner、if语句、switch语句、while和for循环)

流程控制(内含scanner、if语句、switch语句、while和for循环)

用户交互Scanner

通过引用scanner类获取用户的输入,下面代码可以直接背着用

Scanner scanner = new Scanner(System.in);//获取键盘(控制台)输入的数据
灵活使用scanner的方法:

一般用的是nextLine()方法,而不是next()方法;

如果对数据类型有要求,可以使用nextInt()、nextFloat()、nextDouble()等方法

  • 这里是next()方法
if (scanner.hasNext()){ //判断有没有字
    String str = scanner.next(); //有字的条件为true的话就定义变量str   
  • 这里是nextLine()方法
if (scanner.hasNextLine()){
    String str =scanner.nextLine();
    //next()方法不能得到带有空格的字符串,而nextLine()方法可以
  • 这里是nextInt()方法
if (scanner.hasNextInt()){
    i = scanner.nextInt();
  • 这里是nextDouble()方法
     while (scanner.hasNextDouble()){   
         //scanner输入了有数据吗↓
            double x =scanner.nextDouble(); 
         //,有就用x接收scanner收到的一行数据
Scanner实例

慢慢看注释吧

//题目:我们输入多个数字,并求其总和与品均属每每输入
// 一个字母用回车确认,通过输入非数字来结束输入并输出执行结果
public class Demo05 {
    public static void main(String[] args) {
        //以下是自己写的
        Scanner scanner = new Scanner(System.in);//获取键盘(控制台)输入的数据
        System.out.println("请输入数字(输入字母用回车确认即可结算总和和平均数):");
        double sum = 0;//总和
        double cs=0;//次数

        while (scanner.hasNextDouble()){   
            //scanner输入了有数据吗↓
            double x =scanner.nextDouble(); 
            //,有就用x接收scanner收到的一行数据
            sum = sum + x;                    
            //用sum累加每次输入的值
            cs++;                             
            //次数加1
            System.out.println("这次是第"+cs+"次,该次的sum为:"+sum);
        }//结束while循环
        System.out.println("计算结束,总数为:"+sum+",平均数为:"+(sum/cs));
        scanner.close();//记得挂掉IO流的类
    }
}

运行结果:
运行结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WTAHYf8z-1660110974407)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220807004033991.png)]

顺序结构

是最简单的算法结构

任何一个算法都离不开的一种基本算法结构

选择结构

if选择结构

if单选择结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YYDewbrk-1660110974408)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220807153346769.png)]

if双选择结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I6h0bFVe-1660110974409)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220807154036295.png)]

//例如
if (score>=60){
    System.out.println("及格了");
}
else {
    System.out.println("没及格");
}
if多选择结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IZJt036M-1660110974409)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220807154238938.png)]

  //例如
if (score==100){
    System.out.println("恭喜满分");
}
else if (score<100&&score>=80){
    System.out.println("优秀的");
}
else if (score<80&&score>=60){
    System.out.println("及格了");
}
else if (score<60&&score>=0){
    System.out.println("没及格,要再加油");
}
else {
    System.out.println("请输入正确格式");
}
if嵌套结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KODFzjoo-1660110974410)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220807155119638.png)]

switch多选择结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fq7tOuCt-1660110974410)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220809002202517.png)]

//没啥好说 直接看代码,个人喜好请包涵
switch (name){
    case "子仁"://case有穿透功能
        System.out.println("我");
        break;//需要break停止穿透,如果没有break,后面的”喜欢看辉夜大小姐想让我告白“会一起输出
    case "见青":
        System.out.println("喜欢看");
        break;
    case "啊":
        System.out.println("辉夜大小姐");
        break;
    default://除了以上三种情况外的情况执行这条指令
        System.out.println("想让我告白");
}

需要提醒的JDK7之后switch语句才能使用String类型

其原理是将String的类型转为hashCode

(如何看到编译过的class呢)

1.先复制这里

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HiwSrPaa-1660110974411)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220809005511139.png)]

2.把复制的路径打开,将里面的字节码文件放入到idea项目的包里面,如图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7gCHnDeD-1660110974411)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220809005707954.png)]

3.如何idea就会显示你能看得懂的字节码文件了,以下图片是对比图(右是字节码文件)
在这里插入图片描述

循环结构

while循环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KyuNLuko-1660110974412)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220809012521437.png)]

//也是直接看例子吧
//题目是计算1+2+...+99+100的结果
int a = 0;
int b = 0;
while (a<=100){          //注意要有结束的条件,避免死循环
    b=b+a;
    a++;
    System.out.println(b);
}
System.out.println("最终答案为"+b);

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-maohiGWG-1660110974413)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220809012811275.png)]

tips:这个是死循环
死循环也有自己的作用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c4c2Wg06-1660110974413)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220809012605680.png)]

do-while循环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vV72IHO9-1660110974413)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220809231015788.png)]

相当于把中括号提前了并加了个do

代码例子:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nHV8XfdJ-1660110974414)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220809232526597.png)]

While和do-While的区别:

  • do-While至少被执行一次
  • while是先判断再执行,do-while是先执行再判断

for循环

在这里插入图片描述

for循环的快捷键

先打要进行循环的次数,再输入“.for”

死循环的原理在这里插入图片描述

for循环是先初始化,再判断布尔表达式,再更新,再判断布尔表达式,再更新,知道布尔表达式不满足true停止循环

for循环实例(乘法表)
//题目1:计算0到100之间的奇数和偶数的和 
        int maxo= 0;
        int maxj= 0;
        for (int i = 0;i<100;i+=1){
            if (i%2==0){
                maxo+=i;
            }
            else {
                maxj+=i;
            }
        }
        System.out.println("偶数总和为"+maxo+",奇数总数为"+maxj+",总计为"+(maxj+maxo) );

//题目2:用for循环输出1-1000之间能被5整除的数,并且每行输出3个
        for (int i = 1; i <= 1000; i++) {
            if (i%5==0){
                System.out.print(i+" ");
        //注意,如果是平常的System.out.println(),每个输出结构会隔一行
                //但System.out.print()不会换行
            }
            if (i%15==0){
                System.out.print("\n"); //复习一下\n是换行的意思,\t是8个空格即Tab的效果
            }
        }

//题目3:打印九九乘法表
        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();
        }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DAtZGFlw-1660110974414)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220810005003682.png)]

增强for循环

用于简化数组或集合的for循环

分割线划分了两种不同的数组的写法

int[] num = {10,20,30,40,50}; //定义了一个数组
for (int x: num){         //增强for循环 用来简化偷懒编写数组和集合的for循环的
    System.out.println(x);
}
System.out.println("-----------");
for (int i = 0;i<5;i++){ //普通写法
    System.out.println(num[i]);
}

break&continue

break用于终止循环

continue是终止正在跑的那次循环,跳过后面的东西再重新开始循环,例:在这里插入图片描述

练习

//打印三角形,要把三角形拆分为三部分进行编码
for (int i = 1; i <= 5; i++) {    //代表三角形的五行
    for (int j = 5; j >= i; j--) {
        System.out.print(" ");      //代表左边由空格组成的小三角形
    }
    for (int u = 1; u <= i; u++) {  //代表左边由星号组成的小三角形
        System.out.print("*");
    }
    for (int k = 1; k < i; k++) {   //代表右边由星号组成的小三角形
        System.out.print("*");
    }
    System.out.println();  //每一行后记得换行,也能用\n代替
}

效果图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KQM3BYEs-1660110974415)(C:\Users\Jixo\AppData\Roaming\Typora\typora-user-images\image-20220810134945072.png)]

如果不理解其中的运行的过程

左击边框直到出现红点点在这里插入图片描述

点debug在这里插入图片描述

点此图标代表下一步
在这里插入图片描述
心得:for循环嵌套理解可能会困难,但需要练习直到完全能自主编写出效果才行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值