流程控制学习

1.用户交互Scanner

  • Java提供了一个工具类,可以获取用户输入:java.util.Scanner
        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner=new Scanner(System.in);
        //CTRL+ALT+V对该行快速根据变量类型自动生成变量.

        System.out.println("使用next方式接收:");

        //判断用户有没有输入字符串
        if(scanner.hasNext()){
            String str=scanner.next();
            System.out.println("输入的内容为:"+str);
        }
        
		//用完io类一定要关掉,不关闭会一直占用资源
        scanner.close();

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据

  • next():

    1. 一定要读取到有效字符后才可以结束输入。
    2. 对输入的有效字符之前遇到的空白,next()方法会自动将其去掉
    3. 只有输入有小字符后才将其后面输入的空白作为分隔符或者结束符
    4. next()不能得到带有空格的字符串。
  • nextLine():

    1. 以回车为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
    2. 可以获得空白。

hasNextInt:如果输入的是整数
hasNextFloat:如果输入的是小数
配合if或者循环来限制输入的数类型

//输入多个数字,并求其总和与平均数,每输入一个用回车确认,通过输入非数字结束
        Scanner scanner = new Scanner(System.in);

        double sum=0;
        int m=0;

        while (scanner.hasNextDouble()){
            double i=scanner.nextDouble();
            sum+=i;
            m++;
        }
        System.out.println("总和为:"+sum);
        System.out.println("平均数为:"+sum/m);
        
        scanner.close();

2.顺序结构

在这里插入图片描述

3.选择结构

if选择结构

单选泽结构:

 		Scanner scanner = new Scanner(System.in);

        System.out.println("请输入内容:");
        String s = scanner.nextLine();

        //equals:判断字符串是否相等
        if(s.equals("hello")){
            System.out.println(s);
            //如果是hello则会输出s,不是则跳过执行下一条
        }
        System.out.println("end");

        scanner.close();

双选择结构:if。。。else。。。

Scanner scanner = new Scanner(System.in);

        System.out.println("请输入成绩");
        int i = scanner.nextInt();

        if(i>=60){
            System.out.println("及格");
        }else {
            System.out.println("不及格");
        }

        scanner.close();

多选择结构:

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入成绩");
        int i = scanner.nextInt();

        if(i==100){
            System.out.println("满分");
        }else if (i<100&&i>=90){
            System.out.println("优秀");
        }else if (i>=80&&i<90){  //使输入更规范更严谨,减少bug
            System.out.println("良好");
        }else if (i>=70&&i<80){
            System.out.println("中等");
        }else if (i>=60&&i<70){
            System.out.println("及格");
        }else if (i>0&&i<60){
            System.out.println("不及格");
        }else{   //以上满足一个条件就结束,后面的不会执行
            System.out.println("输入不规范");
        }

        scanner.close();

Switch多选择结构

Switch语句中的变量类型可以是:
byte、short、int、char、string(Java SE 7以后)
case标签必须为字符串常亮或字面量

char grade='c';

        switch (grade){
            case 'a':
                System.out.println("优秀");
                break; // break跳出循环,如果不加会一直往下运行,直到下一个break
            case 'b':
                System.out.println("良好");
                break;
            case 'c':  //匹配到此处grade==c,开始往下运行
                System.out.println("及格");
                break;
            case 'd':
                System.out.println("不及格");
                break; //如果上一个break没加,将会输出 及格  不及格
            default:
                System.out.println("未知输入");
        }
String name="ming";
//JDK7新特性,表达式结果可以是字符串
switch (name){
    case "ming":
        System.out.println("明");
        break;
    case "han":
        System.out.println("韩");
        break;
    default:
        System.out.println("???");
}

看源码可以了解JDK7是怎么实现Switch中字符串表达式的
打开项目结构:
在这里插入图片描述
打开项目编译后的输出路径:
在这里插入图片描述
复制需要查看源码的class
在这里插入图片描述
放入idea里面
在这里插入图片描述

打开即可
在这里插入图片描述
可以看出是通过hashCode来实现字符串的比较,比较name的hashCode与case后的hashCode

4.循环结构

while循环

while(布尔表达式){循环内容}

  • 只要布尔表达式为true,循环就会一直进行
  • 大多数情况会让循环停止下来,需要一个让表达式失效的方式来结束循环
   int i=0;
   int sum=0;
   while (i<100){
       i++;
       sum+=i;
   }
   System.out.println(sum);

do…while循环

  • while循环不满足条件则不能进入循环
  • do…while循环至少会执行一次,先do后while循环
 int i=0;
 int sum=0;
 do{
     i++;
     sum+=i;
 }while (i<100);

 System.out.println(sum);

for循环

  • for循环是支持迭代的一种通用结构,是最有效、最灵活的循环结构
    for(初始值;布尔表达式;更新){代码语句}
        //输出0~100的奇数和偶数的和
        int oddSum=0;
        int evenSum=0;

        for (int i = 0; i <= 100; i++) {  //可以使用100.for来快捷输出0~100的for循环
            if(i%2==0)
                evenSum+=i;
            else
                oddSum+=i;
        }
        System.out.println("奇数的和:"+oddSum);
        System.out.println("偶数的和:"+evenSum);
//输出1~1000中能被5整除的书,每行输出三个
        for (int i = 0; i <=1000; i++) {
            if(i%5==0)
                System.out.print(i+"\t");
            if(i%15==0)
                System.out.println();
        }
打印九九乘法表:
        int i;
        int j;
        for(i=1;i<=9;i++){
            for (j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+j*i+"\t\t");
            }
            System.out.println();
        }
打印三角形:
        //打印五行的三角形
        final int LEVEL=5;//三角形高度

        for (int i=1;i<=LEVEL;i++){
            for(int j=1;j<=LEVEL-i;j++)
                System.out.print(" ");
            for (int x=1;x<=2*i-1;x++)
                System.out.print("*");
            System.out.println();
        }

增强for循环

JDK5引入的一种主要用于数组或集合的增强型for循环

        int[] numbers={10,20,30,40,50};//定义一个数组

        for (int x:numbers){ //遍历数组中的元素
            System.out.println(x);
        }
        //相等于
        for (int x=0;x<numbers.length;x++){
            System.out.println(numbers[x]);
        }

5.break与continue

  • break在任何循环语句的的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩下的语句。
  • continue用于终止某次循环过程,即跳过循环中未执行的语句,接着进行下一次是否执行循环的判定。

Debug:
设置断点,程序将会在该处停止
在这里插入图片描述
点击开始debug
在这里插入图片描述
step into:单步执行,遇到子函数就进入并且继续单步执行(进入子函数);

step over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。有一点,经过我们简单的调试,在不存在子函数的情况下是和step into效果一样的(越过子函数,但子函数会执行)。

step out:当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数(跳出子函数)。

在这里插入图片描述
当前程序状态:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值