我的Java学习之路02——流程控制

流程控制

Scanner对象

  • 实现程序和人的交互,java.util.Scanner是Java5的新特征,可以通过Scanner类获取用户的输入

  • 基本语法:

    Scanner s = new Scanner(System.in);
    
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们我用hasNext()与hasNextLine()判断是否还有输入的数据

package com.spirithong.scanner;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);

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

        //判断用户有没有输入字符串
        if (scanner.hasNext()){
            //使用next方式接收
            String str = scanner.next();//程序会等待用户输入完成
            System.out.println("输入的内容为:"+str);
        }

        //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
        scanner.close();

    }
}

package com.spirithong.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        //键盘接收数据
        Scanner scanner = new Scanner(System.in);

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

        //判断是否还有输入
        if(scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println("输出的内容是:"+str);
        }
        scanner.close();

    }

}

package com.spirithong.scanner;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        //键盘接收
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入数据");

        String str  = scanner.nextLine();

        System.out.println("输入的内容为"+str);

        scanner.close();

    }
}

  • next()
    • 一定要读取到有效字符后才可以结束输入
    • 对输入有效字符之前遇到的空白,next()方法自动将其去掉
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
    • next()不能得到带有空格的字符串
  • nextLine()
    • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
    • 可以获得空白
package com.spirithong.scanner;

import java.util.Scanner;

public class Demo04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        //从键盘接收数据
        int i = 0;
        float f = 0.0f;

        System.out.println("请输入整数:");

        if(scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("整数数据:"+i);
        }else {
            System.out.println("输入的不是整数数据!");
        }

        System.out.println("请输入小数数据:");

        if (scanner.hasNextFloat()) {
             f = scanner.nextFloat();
             System.out.println("小数数据:"+f);
        }else {
            System.out.println("输入的不是小数数据!");
        }

        scanner.close();

    }
}

package com.spirithong.scanner;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        //输入多个数字求和、平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
        Scanner scanner  = new Scanner(System.in);

        double sum =0.0;
        int m = 0;
        System.out.println("请输入:");
        while (scanner.hasNextDouble()){
            double x = scanner.nextDouble();
            m++;
            sum = sum +x;
            System.out.println("你输入了"+m+"个数");
        }
        System.out.println("和:"+sum);
        System.out.println("平均值:"+sum/m);
        scanner.close();
    }
}

顺序结构

  • 最简单结构

选择结构

  • if单选择结构

    package com.spirithong.struct;
    
    import java.util.Scanner;
    
    public class IfDemo01 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入内容");
            String s = scanner.nextLine();
    
            if (s.equals("Hello")){
                System.out.println(s);
            }
            System.out.println("End");
            scanner.close();
        }
    }
    
  • if双选择结构

    package com.spirithong.struct;
    
    import java.util.Scanner;
    
    public class IfDemo02 {
        public static void main(String[] args) {
            //考试分数大于60就是及格,小于60就不及格
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("输入成绩:");
            int score = scanner.nextInt();
    
            if (score>60){
                System.out.println("及格");
            }else {
                System.out.println("不及格");
            }
    
            scanner.close();
        }
    }
    
    
    
  • if多选择结构

    package com.spirithong.struct;
    
    import java.util.Scanner;
    
    public class IfDemo03 {
        public static void main(String[] args) {
    
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("输入成绩:");
            int score = scanner.nextInt();
    
            if (score==100){
                System.out.println("恭喜满分");
            }else if (score<100&&score>=90){
                System.out.println("A级");
            }else if (score<80&&score>=70){
                System.out.println("B级");
            }else if (score<70&&score>=60){
                System.out.println("C级");
            }else if (score<60&&score>=0){
                System.out.println("不及格");
            }else {
                System.out.println("成绩不合法");
            }
    
            scanner.close();
        }
    }
    
    
  • 嵌套的if结构

    if(布尔表达式1){
    	if(布尔表达式2){
    	}
    }
    
  • switch多选择结构

    package com.spirithong.struct;
    
    public class SwitchDemo01 {
        public static void main(String[] args) {
            //case穿透  //switch 匹配一个具体的值
            char grade = 'C';
    
            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 'E':
                    System.out.println("挂科");
                    break;
                default:
                    System.out.println("未知等级");
            }
        }
    }
    
    
    package com.spirithong.struct;
    
    public class SwitchDemo02 {
        public static void main(String[] args) {
            String name = "汐泷";
            //JDk7的新性能,表达式结果可以是字符串
            //字符的本质是数字
    
    
            switch (name){
                case "汐泷":
                    System.out.println("汐泷");
                    break;
                case "汐":
                    System.out.println("汐" );
                    break;
                default:
                    System.out.println("未知");
            }
        }
    }
    
    

循环结构

while循环

package com.spirithong.struct;

public class WhileDemo01 {
    public static void main(String[] args) {
        //1~100

        int i =0;
        while (i<100){
            i++;
            System.out.println(i);
        }
    }
}

dowhile循环

package com.spirithong.struct;

public class DoWhileDemo01 {
    public static void main(String[] args) {
        int i =0;
        int sum = 0;

        do{
            sum = sum +i;
            i++;
        }while (i<=100);

        System.out.println(sum);
    }
}

  • while循环先判断后执行,dowhile循环先执行后判断
  • Do....while总保证循环体会被至少执行一次

for循环

  • for循环是支持迭代的一种通用结构,最有效、最灵活的循环结构
  • 其执行次数在执行前是确定的。
  • 初始可以是空语句
for(初始化;条件判断;迭代){
    //代码语句
}
package com.spirithong.struct;

public class ForDemo01 {
    public static void main(String[] args) {
        int oddsum = 0;
        int evensum = 0;

        for (int i=0;i<100;i++){
            if (i%2!=0){
                oddsum += i;
            }else{
                evensum +=i;
            }
        }
        System.out.println("奇数和:"+oddsum);
        System.out.println("偶数和:"+evensum);
    }
}

package com.spirithong.struct;

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

package com.spirithong.struct;

public class ForDemo03 {
    public static void main(String[] args) {
        //打印第一列
        //固定一个循环,包起来
        //调制样式
        for (int j = 1;j<=9;j++){
            for (int i =1;i<=j;i++){
                System.out.print(i+"*"+j+"="+(i*j)+"\t");
            }
            System.out.println();
        }
    }
}

  • 增强for循环

    package com.spirithong.struct;
    
    public class ForDemo04 {
        public static void main(String[] args) {
            int[] numbers  = {10,20,30,40};//定义了一个数组
    
            for (int x:numbers){
                System.out.println(x);
            }
        }
    }
    
    

break 和Continue

  • break 强制退出,不执行剩余语句
  • continue用于终止某次循环,执行剩余语句
package com.spirithong.struct;

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

posted on 2021-01-16 22:03  绫汐泷  阅读(99)  评论(0)    收藏  举报