JAVA流程控制-20210117

JAVA 流程控制

一、Scanner 对象

1.Scanner是什么

java.util是一个 工具包,我们可以通过 其中的Scanner 类来获取用户的输入。

2.使用Scanner进行数据读取

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //创建一个Scanner对象,使用new Scannner(),使用Alt+enter自动补全
        // System.in 是代表读取键盘输入

        //使用hasNext()【读一个单词,空格代表结束】,hasNextLine()【读一行,回车代表结束】 判断是否能读
        if(scanner.hasNext()) //此处可以换成hasNextLine
        {
            String str;
            str = scanner.next();
            System.out.println(str);

        }
        scanner.close();

    }
}
//---运行输入
//Hello World

//--运行输出
//Hello
 

Scanner默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符

shift*2帮助查找类

import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("Hello World!I love you, too");// 传给scanner字符串
        scanner.useDelimiter("!|,");// 制定分隔符,"|"代表或,注意转义字符使用“//”

        while (scanner.hasNext())// 使用循环,只要能继续读就为真
        {
            System.out.println(scanner.next());
        }
        scanner.close();

    }
}

3.scanner读取小数和整数

和读取字符串类似,不过使用的方法不一样,例int:hasNextInt(),nextInt();float:hasNextFloat(),nextFloat()

用一个案例说明:

例3.1:输入多个数字,求总和和平均值

import java.util.Scanner;

public class Demo4 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double sum = 0.0; //总和
        int n = 0;  //平均值

        while(scanner.hasNextDouble())  //判断条件,能读到double字符
        {
            sum +=scanner.nextDouble();
            n+=1;
            System.out.println("目前总和是:"+sum);


        }
        System.out.println(n+"个数的总和是:"+sum);
        System.out.println(n+"个数的平均值是:"+sum/n);
        scanner.close();
    }
}
/*输入和输出
10
目前总和是:10.0
20
目前总和是:30.0
30
目前总和是:60.0
40
目前总和是:100.0
50
目前总和是:150.0
x
5个数的总和是:150.0
5个数的平均值是:30.0
*/

二、顺序、选择、循环(待添加)

1、顺序结构

java的基本结构

2、选择结构

if

//equals 判断字符串的一致
// 单选择和多选择

import java.util.Scanner;

public class Demo4 {
    public static void main(String[] args) {
        double grade = 83.5;
        //if 单选
        if(grade>60) System.out.println("及格");

        //if 多选
        if(grade>80) {
            System.out.println("大于80");
            //if嵌套
            if(grade>90)
            {
                System.out.println("great");
            }
        }
        else if(grade>80){
            System.out.println("一般");
        }
        else{
            System.out.println("不及格");
        }


    }
}

switch

switch(){
    case val1:
        break;
    case val2:
        break;
    default: //(可选)            
}

//-------------------------------
import java.util.Scanner;

public class Demo4 {
    public static void main(String[] args) {
        char grade = 'A';
        switch(grade){
            case 'A':
                System.out.println("优秀");
                break; //代表跳出switch,不执行下面的语句
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
            default :
                System.out.println("不及格");
        }

    }
}

/*-输出
优秀
*/

switch()内可以使用字符或字符串,是JDK的新特性

import java.util.Scanner;

public class Demo4 {
    public static void main(String[] args) {
        String grade = "ABC";
        switch(grade){
            case "ABC":
                System.out.println("ABC");
                break; //代表跳出switch,不执行下面的语句
            case "中文":
                System.out.println("中文");
                break;
            case "英语":
                System.out.println("英语");
            default :
                System.out.println("其他");
        }

    }
}

字符本质还是字符串,如何查看class文件的编译情况,反编译文件(java--class 文件--反编译)

  1. 文件目录下JavaSE\out\production找到class文件

  2. 手动复制到src目录下

  3. 在IDEA中看到.class文件,点击查看

    //
    // Source code recreated from a .class file by IntelliJ IDEA
    // (powered by FernFlower decompiler)
    //
    
    public class Demo4 {
        public Demo4() {
        }
    
        public static void main(String[] args) {
            String grade = "ABC";
            byte var3 = -1;
            switch(grade.hashCode()) {
            case 64578:
                if (grade.equals("ABC")) {
                    var3 = 0;
                }
                break;
            case 646394:
                if (grade.equals("中文")) {
                    var3 = 1;
                }
                break;
            case 1074972:
                if (grade.equals("英语")) {
                    var3 = 2;
                }
            }
    
            switch(var3) {
            case 0:
                System.out.println("ABC");
                break;
            case 1:
                System.out.println("中文");
                break;
            case 2:
                System.out.println("英语");
            default:
                System.out.println("其他");
            }
    
        }
    }
    
    

3、循环结构

while

while(为正)
{
    执行循环体
}

do while:区别在于先执行一边循环体再判断

do{
    执行循环体
}while(为真);

for

for循环结构更简单(iDEA快速生成方法 100.for)

for(初始化条件【可选】; 判断条件【可选】;迭代,或者说是更新【可选】)
{
    循环体
}

例3.1:99乘法表的输出

import java.util.Scanner;

public class ninePlusNine {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {//对于第一行
            for (int j = 1; j <= i; j++) {//列数=行号
                System.out.print(j+"X"+i+"="+i*j+"\t");
            }
            System.out.println();//换行
        } 
            
            
    }
}

增强型for

jdk5引入,遍历数组和集合的快捷方法

import java.util.Scanner;

public class enhanceFor {
    public static void main(String[] args) {
        int[] num = {10,20,30,40};  //int[] 数组类型
        for (int x:num) //每一项遍历出来赋值给x
        {
            System.out.println(x);
        }
                      
    }
}

三、break&continue(待添加)

break跳出当前层的循环

continue此次循环停止, 开始下一次循环

带标签的break和continue

public class enhanceFor {
    public static void main(String[] args) {
        label: //goto的痕迹
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                System.out.println(i+"-"+j);
                if (j==2) break label; //跳出lablel后的循环
            }
        }
    }
}


/* --输出
0-0
0-1
0-2
*/

四、例子和Debug

打印菱形

import java.util.Scanner;

public class TestDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            if(i>5){
                for (int j=i-5; j>0;j--)
                {
                    System.out.print(" ");
                }
                for(int j=1; j<=2*(10-i)-1;j++)
                {
                    System.out.print("#");
                }
            }
            if(i<=5)
            {
                for (int j=1;j<=5-i;j++)
                {
                    System.out.print(" ");

                }
                for (int j=1;j<=2*i-1;j++)
                {
                    System.out.print("#");
                }
            }
            System.out.println();
        }
    }
}
/*--结果
    #
   ###
  #####
 #######
#########
 #######
  #####
   ###
    #
*/

debug:设置断点,debug,单步执行

posted on 2021-01-17 22:32  木南34  阅读(77)  评论(0)    收藏  举报

导航

Copyright © 2018 拱垲. All rights reserved.