zoukankan      html  css  js  c++  java
  • 疯狂Java基础Day2

    巩固Java流程控制的学习。。。

    一、用户交互Scanner

    通过Scanner类获取用户的输入

    import java.util.Scanner;
    
    public class Demo1 {
        public static void main(String[] args) {
            //创建一个扫描对象,用于接收键盘数据
            Scanner sc = new Scanner(System.in); //hello world
            System.out.println("使用next方式接收:");
            //判断用户有没有字符串输入
            if (sc.hasNext()){
                //用next方式接收
                String s = sc.next(); //hello
                System.out.println("输出内容为:"+s);
            }
            sc.close(); //凡是属于IO流的类如果不关掉就一直会占用资源
        }
    }
    
    import java.util.Scanner;
    
    public class Demo2 {
        public static void main(String[] args) {
            //创建一个扫描对象,用于接收键盘数据
            Scanner sc = new Scanner(System.in); //hello world
            System.out.println("使用nextLine方式接收:");
            //判断用户有没有字符串输入
            if (sc.hasNext()){
                //用next方式接收
                String s = sc.nextLine(); //hello world
                System.out.println("输出内容为:"+s);
            }
            sc.close(); //凡是属于IO流的类如果不关掉就一直会占用资源
        }
    }
    

    对于next()和nextLine():后者更常用

    • next()
      • 一定要读到有效字符串后才可以结束输入
      • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
      • 只有输入有效字符后才将其后面输入的空白作为结束符
      • next()不能得到带有空格的字符串
    • nextLine()
      • 返回输入回车之前的所有字符
      • 可以得到空白

    小案例:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并执行结果。

    import java.util.Scanner;
    
    public class Demo3 {
        public static void main(String[] args) {
            Scanner scanner =  new Scanner(System.in);
            //和
            double sum = 0.0;
            //计算输入了多少个数字
            int n = 0;
            //通过循环判断是否还有输入,并在里面对每一次进行求和统计
            while (scanner.hasNextDouble()) {
                double x = scanner.nextDouble();
                n++;
                sum = sum+x;
            }
            System.out.println(n+"个数的和为:"+sum);
            System.out.println(n+"个数的平均值为:"+(sum/n));
    
            scanner.close();
        }
    }
    

    二、顺序结构

    按顺序一句一句执行,自上而下

    三、选择结构

    1、if单选择结构

    if(布尔表达式) {
        //如果布尔表达式为true将执行的语句
    }
    

    2、if双选择结构

    if(布尔表达式) {
        //如果布尔表达式为true将执行的语句
    }else {
        //如果布尔表达式为false将执行的语句
    }
    

    3、if多选择结构

    if(布尔表达式 1) {
        //如果布尔表达式 1的值为true将执行的语句
    }else if(布尔表达式 2) {
        //如果布尔表达式 2的值为false将执行的语句
    }else if(布尔表达式 3) {
        //如果布尔表达式 3的值为false将执行的语句
    }else {
        //如果以上布尔表达式都不为true将执行的语句
    }
    

    4、if嵌套结构

    if(布尔表达式 1) {
        //如果布尔表达式 1的值为true执行的语句
        if(布尔表达式 2) {
            //如果布尔表达式 2的值为true执行的语句
        }
    }
    

    5、switch选择结构

    switch(expression) {
        case value:
            //语句
            break; //可选
        case value:
            //语句
            break; //可选
        //任意数量case语句
        default: //可选
            //语句
    }
    

    case具有穿透能力,switch的优势在于:可以匹配一个具体的值

    //理解case的穿透力
    public class Demo5 {
        public static void main(String[] args) {
            char grade = 'C';
            switch (grade) {
                case 'A':
                    System.out.println("满分");
                case 'B':
                    System.out.println("优秀");
                case 'C':
                    System.out.println("及格");
                case 'D':
                    System.out.println("不及格");
                default:
                    System.out.println("未知");
            }
        }
    }
    //及格
    //不及格
    //未知
    

    通过输出结果发现,case后的结果全部输出,为了避免该种现象,我们只需加上break

    注意:jdk7后,switch支持字符串String类型

    public class SwitchDemo {
        public static void main(String[] args) {
            //须知:字符的本质还是数字
            //反编译即可发现
    
            String fruit = "大西瓜";
            switch (fruit) {
                case "大西瓜":
                    System.out.println("大西瓜");
                    break;
                case "草莓":
                    System.out.println("草莓");
                    break;
                case "菠萝":
                    System.out.println("菠萝");
                    break;
                default:
                    System.out.println("哈密瓜");
            }
        }
    }
    

    反编译一下:

    image.png

    四、循环结构

    1、while循环

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

    大多数情况下需要一个表达式失效的方式来结束循环

    2、dowhile循环

    do {
        //代码语句
    }while(布尔表达式)
    

    while和do...while的区别

    • do...while循环至少会执行一次
    • while先判断后执行,do...while先执行后判断

    3、for循环

    for(初始化;布尔表达式;更新) {  
        //代码语句
    }
    

    最有效、最灵活的循环结构!

    关于计算1+2+...+100=?的不同解法:

    public class WhileDemo {
        public static void main(String[] args) {
            int i = 0;
            int sum = 0;
            while (i<=100) {
                sum = sum+i;
                i++;
            }
            System.out.println(sum);
        }
    }
    
    public class DoWhileDemo {
        public static void main(String[] args) {
            int i = 0;
            int sum = 0;
            do {
                sum = sum+i;
                i++;
            }while (i<=100);
            System.out.println(sum);
        }
    }
    
    public class ForDemo {
        public static void main(String[] args) {
            int sum = 0;
            for (int i = 0; i <= 100; i++) {
                sum = sum+i;
            }
            System.out.println(sum);
        }
    }
    

    4、增强for循环

    for(声明语句:表达式) {
        //代码语句
    }
    

    遍历用法:

    public class EnhanceFor {
        public static void main(String[] args) {
            int[] arr = {1,2,3,4,5};
            //普通for
            for (int i = 0; i < 5; i++) {
                System.out.println(arr[i]);
            }
            System.out.println("=====================");
            //增强for
            for (int x:arr
                 ) {
                System.out.println(x);
            }
        }
    }
    

    5、break与continue

    break用于强行退出循环

    continue用于终止某次循环

  • 相关阅读:

    守护线程
    下载图片
    多线程
    self的作用
    设置项目地址环境
    对象 类
    ValueError: urls must start with a leading slash
    mock挡板接口开发
    K&R——第五章 指针与数组
  • 原文地址:https://www.cnblogs.com/wangzheming35/p/14345268.html
Copyright © 2011-2022 走看看