Java流程控制

Java流程控制

1 Scanner对象

Java可以通过使用Scanner类来获取用户的输入;
基本语法:

Scanner s=new Scanner(System.in);

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

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

NextLine()
5. 以Enter为结束符也就是说nextLine方法返回的是输入回车键之前的所有字符.
6. 可以活得空白

两个小案例:

案例一
要求我们可以输入多个数字,求其总和和平均值,每输入一个数字用回车键确认,并通过输入非数字来结束输入,并输出结果。

package com.Hai.Scanner;

import java.util.Scanner;

public class Dem07 {
    public static void main(String[] args) {
        /*我们可以输入多个数字,求其总和和平均值,每输入一个数字用回车键确认,并通过
        输入非数字来结束输入,并输出结果
         */

        Scanner scanner=new Scanner(System.in);
        double sum=0;
        int m=0;
        System.out.println("请输入数据:");
        while (scanner.hasNextDouble()){
            double x=scanner.nextDouble();
            sum=sum+x;
            m=m+1;
            System.out.println("你输入的是第"+m+"个数据,"+"当前的和为"+sum);
        }
        System.out.println("你一共输入了"+m+"个数据");
        System.out.println("输入数据的总和为"+sum);
        System.out.println("输入数据的平均值为"+sum/m);


        scanner.close();
    }
}

案例二
编写一个让电脑判断你输入的数据是整数还是小数的程序。

package com.Hai.Scanner;

import java.util.Scanner;
public class Dem06 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        boolean flag=true;

        int i=0;
        float f=0.0f;
        System.out.println("=====这是一个猜你输入的数据是整数还是小数的小游戏=====");

        while(flag){
            System.out.println("请输入一个小数或是一个整数:");

            if(scanner.hasNextInt()){
                i=scanner.nextInt();
                System.out.println("你输入的是一个整数");
                System.out.println("输入的整数为"+i);
            }else{
                f=scanner.nextFloat();
                System.out.println("你输入的是一个小数");
                System.out.println("输入的小数为"+f);
            }

        }
        scanner.close();
    }
}

2 顺序结构

顺序结构就是代码从上往下执行的结构。

3 选择结构

3.1 if单选择结构

package com.Hai.struct;

import java.util.Scanner;

public class Dem01 {
    public static void main(String[] args) {
        //if的单选择结构
        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入数:");
        String s=scanner.nextLine();
        if(s.equals("hello")){
            System.out.println(s);
        }else{
            System.out.println("End");
        }
        scanner.close();
    }
}

3.2 if双选择结构

package com.Hai.struct;

import java.util.Scanner;

public class Dem02 {
    public static void main(String[] args) {
        //考试大于60分就是及格,小于60分就是不及格;
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入成绩");
        double d=scanner.nextDouble();
        if(d<=60){
            System.out.println("成绩不及格");
        }else{
        }

        scanner.close();

    }
}

3.3 if多选择结构

package com.Hai.struct;

import java.util.Scanner;

public class Dem03 {
    public static void main(String[] args) {
        //if的多选择结构
        Scanner scanner=new Scanner(System.in);
        while(true){
            System.out.println("请输入数据");
            double d=scanner.nextDouble();
            if(d==100){
                System.out.println("成绩满分");
            }else if(d>=90){
                System.out.println("成绩优秀");
            }else if(d<90&&d>80){
                System.out.println("成绩为A");
            }else if (d>70&&d<80) {
                System.out.println("成绩为B");
            }else if (d>60&&d<70) {
                System.out.println("成绩及格");
            }else{
                System.out.println("成绩不及格");
            }
        }
       // scanner.close();留一个问题,这里为啥会报错?
    }
}

3.4 嵌套的if结构

嵌套就是if选择结构里面还有if结构。

3.5 switch多选择结构

注意 case 的穿透原则,case的表达式后要写break;如果不写就会执行以后的代码;直到遇到一个break才会停止。

switch在JDK7以后支持表达式的结果是字符串;因为字符串的本质是数字。
案例3.5-1

package com.Hai.struct;

import java.util.Scanner;

public class switchDem01 {
    public static void main(String[] args) {
        //switch 选择结构

        Scanner scanner=new Scanner(System.in);

        System.out.println("请输入成绩");

        while(true){
            String grade=scanner.nextLine();
            switch (grade){
                case"A":
                    System.out.println("优秀");
                    break;
                case "B":
                    System.out.println("良好");
                    break;
                case "C":
                    System.out.println("及格");
                    break;
                case "D":
                    System.out.println("不合格");
                    break;
                case "f":
                    System.out.println("挂科");
                default:
                    System.out.println("未知等级");
            }
        }

        //scanner.close();当使用while循环的时候,Scanner对象怎么关闭?
    }

}

IDEA支持反编译,Java进行编译后是一个class文件,class文件时是一个二进制的字节码文件,需要进行编译后我们才看得懂。

例如,打开上面的案例3.5-1的class文件,对其进行编译,步骤如下:

在这里插入图片描述
在这里插入图片描述
把switchDem01.class文件复制到你打开的项目的目录中
在这里插入图片描述
在这里插入图片描述
编译后的结果对比如图

在这里插入图片描述

4 循环结构

4.1 while循环

案例4.1-1
输出0~100的数

package com.Hai.struct;

public class whileDem01 {
    public static void main(String[] args) {
        //输出0~100的数
        int i=0;
        while(i<100){
            i++;
            System.out.println(i);
        }
    }
}

案例4.1-2
计算1-100的和。

package com.Hai.struct;

public class whileDen02 {
    public static void main(String[] args) {
        //计算1+2+3···+100=?
        int i=0;
        int sum=0;
        while(i<=100){
            sum=sum+i;
            i++;
        }
        System.out.println("1-100的和为:"+sum);
    }
}

4.2 do····while循环

对于while循环而言,如果不满足条件,就不执行循环,但是,有时候我们需要即使不满足循环仍然要执行一次。
案例4.2-1

package com.Hai.struct;

public class doWhileDem01 {
    public static void main(String[] args) {
        //计算1+2+3···+100=?
        int i=0;
        int sum=0;
        do{
            sum=sum+i;
            i++;
        }while(i<=100);
        System.out.println("");
    }
}

案例4.2-2
do…while和while的区别

package com.Hai.struct;

public class doWhileDem02 {
    public static void main(String[] args) {
        int a=0;
        System.out.println(a);
        //do...while与while的区别:

        //while如果不满足条件,就一次都不执行
        while(a<0){
            a++;
            System.out.println(a);
        }
        System.out.println("================");

        //do...while至少执行一次
        do{
            a++;
            System.out.println(a);
        }while(a<0);
    }
}

4.3 for循环

1.在IDE中的for循环的快速写法 100.for回车
会出现

 for (int i = 0; i < 100; i++) {
            
        }
  1. for死循环的写法
        //死循环
        for (; ;) {
            
        }

案例4.3-1
使用for输出1-10的数

package com.Hai.struct;

public class forDem01 {
    public static void main(String[] args) {
        //使用for输出1-10的数;

        for (int i = 0; i <=10; i++) {
            System.out.println(i);
        }
    }
}

案例4.3-2
计算1-100以内的奇数的和和偶数的和

package com.Hai.struct;

public class forDem02 {
    public static void main(String[] args) {
        //计算0-100以内奇数和偶数的和
        int oddsum=0;//奇数的和
        int evensum=0;//偶数的和
        for (int i = 0; i <=100; i++) {
            if(i%2==0){
                evensum=evensum+i;
            }else{
                oddsum=oddsum+i;
            }
        }
        System.out.println(evensum);
        System.out.println(oddsum);
    }
}

案例4.3-3
用while或者for循环 输出0-1000内之间能被5整除的数,并且每一行输出3个.
println表示输出会换行
print表示输出不会换行

package com.Hai.struct;

public class forDem03 {
    public static void main(String[] args) {
        //用while或者for循环 输出0-1000内之间能被5整除的数,并且每一行输出3个
        for (int i = 0; i <=1000; i++) {
            if(i%5==0){
                System.out.print(i+" ");
            }
            if(i%(5*3)==0){
                //System.out.println();
                System.out.print("\n");
            }
        }
    }
}

案例4.3-7
打印九九乘法表

package com.Hai.struct;

public class forDem04 {
    public static void main(String[] args) {
        //打印九九乘法表

        //方法一:输出如下:
        /*
        1*1=1	1*2=2	1*3=3	1*4=4	1*5=5	1*6=6	1*7=7	1*8=8	1*9=9
        2*2=4	2*3=6	2*4=8	2*5=10	2*6=12	2*7=14	2*8=16	2*9=18
        3*3=9	3*4=12	3*5=15	3*6=18	3*7=21	3*8=24	3*9=27
        4*4=16	4*5=20	4*6=24	4*7=28	4*8=32	4*9=36
        5*5=25	5*6=30	5*7=35	5*8=40	5*9=45
        6*6=36	6*7=42	6*8=48	6*9=54
        7*7=49	7*8=56	7*9=63
        8*8=64	8*9=72
        9*9=81
        */
        
        for (int j = 1; j <=9; j++) {
            for (int i = j; i <=9; i++) {
                System.out.print(j+"*"+i+"="+(j*i)+"\t");
            }
            System.out.println();
        }

        //方法二:
        /*
        1*1=1
        1*2=2	2*2=4
        1*3=3	2*3=6	3*3=9
        1*4=4	2*4=8	3*4=12	4*4=16
        1*5=5	2*5=10	3*5=15	4*5=20	5*5=25
        1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36
        1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49
        1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64
        1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81
        */
        for (int j = 1; j <=9; j++) {
            for (int i = 1; i <=j; i++) {
                System.out.print(i+"*"+j+"="+(j*i)+"\t");
            }
            System.out.println();
        }
    }
}

4.4 Java5中引用了一种主要应用于数组的增强型for循环

java5中的增强for循环是用来偷懒得;
案例4.4-1

package com.Hai.struct;

public class forDem06 {
    public static void main(String[] args) {
        int[] number={10,20,30,40,50};//定义一个数组
        
        for(int x:number){
            System.out.println(x);
        }
    }
}

break continue的使用

break可以用于强行突出循环,不执行循环中剩余的语句;
continue在循环体中,用于终止某次循环的过程,即跳过循环体中尚未执行的语句,接着下一次的循环;

案例continue

package com.Hai.struct;

public class continueDem01 {
    public static void main(String[] args) {
        int i=0;
        while(i<100){
            i++;
            if(i%10==0){
                System.out.println();
                continue;
            }
            System.out.println(i);
        }
    }
}

案例break

package com.Hai.struct;

public class breakDem01 {
    public static void main(String[] args) {
        int i=0;
        while(i<100){
            i++;
            if(i==15){
                break;
            }
            System.out.println(i);
        }
    }

}

5 练习题训练

打印三角型

package com.Hai.struct;

public class PraticeDem01 {
    public static void main(String[] args) {
        //打印三角形
       /*   *
           ***
          *****
         *******
        *********   */
        for (int i = 1; i <=5; i++) {
            for (int  j= 5; j>=i; j--) {
                System.out.print(" ");
            }
            for (int  j= 1; j<=i; j++) {
                System.out.print("*");
            }
            for (int  j= 1; j<i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值