Java流程控制

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

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

        //求和
        double sum = 0;
        int count = 0;
        //存储输入的数字,并计算个数
        //当输入的数字不是double类型的时候退出循环,条件不符合的时候就会跳出循环
        while(scanner.hasNextDouble()){
            count++;
            sum+=scanner.nextDouble();
        }

        System.out.println("和等于="+sum);
        double avg = sum/count;
        System.out.println("平均数等于="+avg);

        //关闭资源
        scanner.close();
    }
}

2.顺序结构
3.选择结构
if单选择结构
if(){}
If双选择结构
if(){
}else{
}
If多选择结构
if(){
}if else{
}if else{
}else{
}
满足一个If  else其他的If else不执行
使用嵌套的if...else 语句是合法的。也就是说你可以在另一个if或者else if语句中使用if或者else if语句,你可以像if语句一样嵌套else if...else。
//If单选择结构
public class IfDemo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入内容:");
        String s = scanner.nextLine();

        //.equals是针对于字符串的比较
        if(s.equals("Hello")){
            System.out.println("输入的是:"+s);
        }

        System.out.println("end");
        scanner.close();
    }
}

Switch case
public class SwitchDemo01 {
    public static void main(String[] args) {
        //case穿透 Switch 是匹配一个具体的值 break防止case穿透
        //case 支持String,char,short,byte,int
        char grade = 'c';
        switch(grade){
            case 'A':
                System.out.println("优秀");
                break;//选填  break的作用是跳出switch语句,若不写break将一直执行到底
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
                break;
            case 'D':
                System.out.println("不及格");
                break;
            default :
                System.out.println("成绩输入错误");
        }
    }
}

4.循环结构
while(){
}
for(){
}
do{
}while()
While和do-While的区别
while先判断后执行,do-while是先执行后判断
Do...while总是保证循环体会被至少执行一次!这是他们的主要差别

For循环:一种支持迭代的通用结构,是最有效,最灵活的循环结构(执行次数在执行前就已确定

for(){
}
public class ForDemo02 {
    public static void main(String[] args) {
        int count =0;
        //使用while或者for循环输出1-1000之间能被5整除的数,并且每行输出3个
        for(int i=1;i<=1000;i++){
            //能够被5整除就打印
            if(i%5==0){
                //每输出三个数换一次行
                if(count>=3){
                    count=0;
                    System.out.println();
                }
                System.out.print(i+" ");
                count++;
            }
        }
    }
}//print()和println()的区别

public class ForDemo03 {
    public static void main(String[] args) {
        //打印9*9乘法表
        for(int i=1;i<10;i++){
            for(int j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+i*j+"   ");
            }
            System.out.println();
        }
    }
}

for循环的增强:对数组和集合进行遍历
public class ForDemo04 {
    public static void main(String[] args) {
        //for循环的增强,对数组和集合进行遍历
        int[] arr = {10,20,30,40};//创建一个数组

        //普通的遍历方法:对数组arr
        System.out.println(arr.length);
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        System.out.println("--------------------------");
        //增强的for循环遍历数组
        for(int i:arr){
            System.out.println(i);
        }

    }
}

5.break和continue
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
continue语句在循环语句体中,用于终止某次循环过程,及跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
public static void main(String[] args) {
    //break跳出循环语句
    int i=0;
    while(i<50){
        i++;
        System.out.println(i);
        if(i==30){
            break;//i=30的时候执行break跳出while循环
        }
    }
    System.out.println("跳出之后,程序继续执行");
}


public static void main(String[] args) {
    //continue跳出当前循环,继续下一次循环(终止某次循环)
    for(int i=0;i<100;i++){
        System.out.print(i+"  ");
        if(i%10==0){
            System.out.println("---");
            continue;
          //  System.out.println("===");continue之后的语句不会再执行
        }
    }
}

//label标签方法类似于goto语句
public static void main(String[] args) {
    //求100-150之间的质数
    out:for(int i=100;i<=150;i++){
        for(int j=2;j<i;j++){
            if(i%j==0){
                continue out;
            }
        }
        System.out.print(i+"  ");
    }
}


6.练习
public class HomeWork {
    public static void main(String[] args) {
        //打印三角形  5行
        for(int i=0;i<5;i++){
            //打印左边的三角
            for(int j=4;j>i;j--){
                System.out.print(" ");
            }
            for(int j=0;j<i;j++){
                System.out.print("*");
            }
            //打印右边的三角
            for(int z=1;z<i;z++){
                System.out.print("*");
            }
            System.out.println();
        }
    }

  

 

posted @ 2020-11-30 17:14  争取做百分之一  阅读(44)  评论(0)    收藏  举报