zoukankan      html  css  js  c++  java
  • java入门 (四) 流程控制(一)

    java流程控制(一)

    1.用户流程控制Scanner

    2.Scanner进阶使用

    3.顺序结构

    4.if选择结构

    5.Switch选择结构

    6.While循环详解

    7.DoWhile循环

    用户流程控制Scanner

    java.util.Scanner是java5的新特性,我们可通过Scanner类来获取用户的输入

    基本语法:

    Scanner s = new Scanner(System.in)
    

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

    各个Demo为练习题。

    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);//输入HELLO WORLD,控制台只输出HELLO
            }
            //凡是属于IO流,使用完记得关闭
            scanner.close();
        }
    }
    
    

    总结:next()不能得到带有空格的字符串

    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);//输入HELLO WORLD,控制台成功输出HELLO WORLD
            }
        }
    }
    

    总结:nextLine()可以获得空白

    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();
        }
    }
    

    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();
        }
    }
    
    public class Demo05 {
        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();
                m = m+1;//m++
                sum = sum + x;
                System.out.println("你输入了"+m+"个数据,"+"数字的和为"+sum);
            }
            System.out.println(m+"个数字的和为:"+sum);
            System.out.println(m+"个数字的平均数为:"+(sum/m));
    
    
    
    
    
            scanner.close();
    
        }
    }
    
    

    顺序结构

    java的基本结构就是顺序结构,除非特别指明,否则就按照一句一句的顺序执行

    顺序结构是最简单的算法结构

    语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

    选择结构

    if选择结构

    if单选择结构

    我们很多时候需要去判断一个东西是否是可行,然后我们才去执行,这样一个过程在程序中用if语句来表示。

    语法:

    if(布尔表达式){
    //如果布尔表达式为true将执行的语句
    }
    
    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双选择结构

    if-else结构

    语法:

    if(布尔表达式){
    //如果布尔表达式的值为true将执行的语句
    }elst{
    //如果布尔表达式的值为false将执行的语句
    }
    
    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多选择结构

    语法:

    if(布尔表达式1){
    //如果布尔表达式1的值为true执行代码
    }else if(布尔表达式2){
    //如果布尔表达式2的值为true执行代码
    }else if(布尔表达式3){
    //如果布尔表达式3的值为true执行代码
    }else{
    //如果以上布尔表达式都不为true将执行代码
    }
    
    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>=80){
                System.out.println("优秀");
            }else if(score<80&&score>=70){
                System.out.println("良好");
            }else if (score<70&&score>=60){
                System.out.println("及格");
            }else if (score<60&&score>=0){
                System.out.println("不及格");
            } else {
                System.out.println("输入有误!请重新输入!");
            }
            scanner.close();
        }
    }
    

    嵌套的if结构

    使用嵌套的if...else语句是合法的。也就是可以在另一个if或者else if 语句中使用If或者else if语句

    语法:

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

    switch多选择结构

    多选择结构还有一个实现方式就是switch case 语句

    switch case 语句判断一个变量与一系列值中某个值是否相等,每个值为一个分支

    switch 语句中的变量类型可以是:

    1. byte,short,int或char
    2. 从JavaSE7开始,switch支持字符串String类型了
    3. 同时case标签必须为字符串常量或字面量

    语法:

    switch(expression){
                case value1 :
    
                    break;//可选
                case value2:
                    //语句
                    break;//可选
                case value3:
                    //语句
                    break;//可选
                default:  //可选
                    break;//可选
            }
    
    public class SwitchDemo01 {
        public static void main(String[] args) {
            //case穿透   //switch匹配y一个具体的值
            char grade = 'F';
    
            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;
                default:
                    System.out.println("未知");
                    break;
            }
        }
    }
    
    public class SwitchDemo02 {
        public static void main(String[] args) {
            //jdk7的特性,switch表达式结果可以是字符串!
            //字符的本质还是数字!
    
            //反编译  java---class(字节码文件)---反编译(IDEA)
            String s = "吃晚饭";
            switch (s){
                case "吃早饭" :
                    System.out.println("吃早饭");
                    break;
                case "吃午饭" :
                    System.out.println("吃午饭");
                    break;
                case "吃晚饭" :
                    System.out.println("吃晚饭");
                    break;
                default:
                    System.out.println("减肥");
            }
        }
    }
    

    掌握一种反编译

    1. 点开项目结构
    2. 得到Product compller output地址
    3. 复制地址并进入到地址目录,可以看到乱码的.class文件,复制一个测试用
    4. IDEA 右键包名--Show in Explorer--粘贴.class文件
    5. 看到包里显示了.class文件打开文件
    6. 可以看到hashcode下的 String s
    7. 哈希是通过特点算法,给每一个“东西”一个唯一的值
    8. 理解就好

    循环结构

    while循环

    结构为

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

    只要布尔表达式为true,循环就会一直执行下去

    我们大多数情况会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环

    少部分情况需要循环一直执行,比如服务器的请求响应监听等

    循环条件一直为true就会造成无限循环(死循环),我们正常的业务编程中应该尽量避免死循环

    public class WhileDemo01 {
        public static void main(String[] args) {
            //输出1到100
            int a = 0;
            while (a<100){
                a++;
                System.out.println(a);
            }
        }
    }
    
    public class WhileDemo02 {
        public static void main(String[] args) {
            //死循环
            while (true){
                //等待客户端连接
                //定时检查
                //尽量不要写死循环!
            }
        }
    }
    
    public class WhileDemo03 {
        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(sum);
        }
    }
    

    do while 循环

    对于while语句而言,如果不满足条件,则不能进入循环。但有时我们需要即使不满足条件,也至少执行一次。

    do...while循环和while循环相似。不同的是,do...while循环至少会执行一次。

    结构:

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

    while和do-while的区别:

    while先判断后执行,do-while先执行后判断

    do-while总是保证循环体会被至少执行一次,这是他们的主要差别

    
    
    public class DoWhileDemo01 {
        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(sum);
        }
    }
    
    public class DoWhileDemo02 {
        public static void main(String[] args) {
            int a = 0;
            while (a<0){
                System.out.println(a);
            }//不输出
            System.out.println("------------");
            do {
                System.out.println(a);
            }while (a<0);//do-while输出值为0,因为先输出在判断
        }
    }
    

    学习笔记参考B站UP主:狂神说
    点击此处进入B站连接

  • 相关阅读:
    如何解决Unsupported major.minor version 52.0问题?
    无法将 Ethernet0 连接到虚拟网络”VMnet0″ 详细信息可以在 vmware.log 文件中找到未能连接虚拟机Ethernet0
    安卓逆向入门教程(一)
    go数据类型 slice map
    Tomcat服务配置及性能优化
    RabbitMQ消息可靠性投递
    LevelDb引擎
    【前端】Vue.js前端框架
    【PHP】PHP 微服务协程框架Swoft
    Supervisor进程管理工具
  • 原文地址:https://www.cnblogs.com/XING-ZHI-JI-DA-XUE/p/14182191.html
Copyright © 2011-2022 走看看