Java基础2_流程控制

一.流程控制

(一)用户交互Scanner

 基本语法:

 Scanner scanner=new Scanner(System.in);

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

Scanner 对象

   next():

  •     一定要读取到有效字符后才可以结束输入;
  •     对输入有效字符之前遇到的空白,next()方法会自动将其去掉;
  •     只输入有效字符后才能将其后面输入的空白作为分隔符或者结束符;
  •    next()不能得到带有空格的字符串。
       
    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()){
                String str=scanner.next();
                System.out.println("输出的内容为:"+str);
            }
            //凡是属于io流的类,用完之后要关闭,不然会占用资源
            scanner.close();
        }
    
    }

   nextLine():

  •       以enter为结束符,也就是说,nextLine()方法返回的输入回车之前的搜友字符;
  •       可以获得空白。
    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();
        }
    }

练习:

可以输入多个数字,并求其综合与平均数,每输入一个数字回车确认,通过输入非数字来结束程序;
import java.util.Scanner;
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; sum=sum+x; System.out.println("你当前输入了"+m+"个数据;当前数据的和为:"+sum); } System.out.println(m+"个数和为"+sum); System.out.println(m+"个数的平均值"+(sum/m)); scanner.close(); } }

  (二)  顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则就按照一句一句执行,顺序结构是最简单的算法结构。

(三)选择结构

  • if单选择结构
语法:
if (布尔表达式){//如果表达式为ture将执行的语句
   }
public class IfDemo01 {
    public static void main(String[] args) {
      Scanner scanner  =new Scanner(System.in);
        System.out.println("请输入内容:");
        String s =scanner.nextLine();
        //利用if判断输入的字符是否等于“hello”
        if (s.equals("hello")){
            System.out.println(s);
        }
        System.out.println("end");

        scanner.close();

    }
}
  • if双选择结构
语法:
if(布尔表达式){
    //如果布尔表达式的值为ture
}else{
    //如果布尔表达式的值为false
}
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多选择结构
语法:
if(布尔表达式1){
    //如果布尔表达式1的值为ture执行代码
}else if(布尔表达式2){
     //如果布尔表达式2的值为ture执行代码
}else if(布尔表达式3){
     //如果布尔表达式3的值为ture执行代码
}else{
     //如果布尔表达式的值都不为ture代码
}
import java.util.Scanner;
public class IfDemo03 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
   //利用if语句判断成绩的等级
        System.out.println("请输入成绩:");
        int score=scanner.nextInt();
        if (score==100){
            System.out.println("满分");
        }else if (score>90&&score<100){
            System.out.println("A级!");
        }else if (score<90&&score>80){
            System.out.println("B级");
        }else if (score<80&&score>70){
            System.out.println("C级");
        } else if (score<70&&score>60){
            System.out.println("D级");
        }else if (score==60){
            System.out.println("及格");
        } else if (score>0&&score<60){
            System.out.println("不及格");
        }else {
            System.out.println("成绩不合法");
        }
        scanner.close();
    }
}
  • 嵌套的if结构
语法:
if(布尔表达式1){
  //如果布尔表达式1的值为ture执行代码
 if(布尔表达式2){//如果布尔表达式2的值为ture执行代码
   }
}
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&&score>0){
          if (score>=80){
              System.out.println("优秀");
          }else  if (score>=60&&score<79){
              System.out.println("及格");
          }else {
              System.out.println("不及格");
          }
      }else {
          System.out.println("请输入合法的成绩");
      }
        scanner.close();
    }
}
 
  • switch多选择结构

import java.util.Scanner;
public class SwitchDemo02 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入内容:");
        String name=scanner.nextLine();
        switch (name){
            case "zheng":
                System.out.println("zheng");
                break;
            case "juan":
                System.out.println("juan");
                break;
            default:
                System.out.println("未匹配到");

        }
    }
}

(四)循环结构

while循环

while(布尔表达式){
       //循环内容
}
  • 只要布尔表达式为ture,循环就一直执行下去。
  • 我们大多数情况是会让循环停止下来的,我们需要一个表达式失效的方式来结束循环。
  • 少数部分情况需要循环一直执行下去,比如服务器的请求监听等。
  • 循环条件一直为徒惹就会造成无限循环,我们正常的业务变成中应该尽量避免死循环,会影响程序性能或者造成程序卡死崩溃。
    public class WhileDemo02 {
        public static void main(String[] args) {
            int i=0;
            int sum=0;
            while (i<=100){
                sum=sum+i;
                i++;
            }
            System.out.println(sum);
        }
    }

do while循环

do{
        //代码语句
}while(布尔式表达);
public class DoWhileDemo01 {
    public static void main(String[] args) {
        int i=0;
        while (i<0){
            System.out.println(i);
            i++;
        }
        System.out.println("====================");
        do {
            System.out.println(i);
        }while (i<0);
        
    }
    
}

for循环

for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构
语法:
for(初始化;布尔值表达式;更新{
       //代码语句
}
//九九乘法表
public class ForDemo04 {
    public static void main(String[] args) {
        for (int j =1; j <= 9; j++) {
            for (int i = 1; i <=j; i++) {
                System.out.print(j+"*"+i+"="+(j*i)+"\t");
        }
            System.out.println();

        }
    }
}
//1000以内除以5为整数,每行3个
public class ForDemo03 {
    public static void main(String[] args) {
        for (int i = 0; i <=1000; i++) {
            if (i%5==0){
                System.out.print(i+"\t");
            }
            if (i%(5*3)==0){
                System.out.println();
                //System.out.println("\n");
            }
        }
//println 输出后会换行
//print输出后不会换行

    }
}

(五)break&continue

break:在任何循环语句的主体部分,均可用break控制循环的流程,用于强制退出循环不执行剩余的循环流程。

public class DreakDemo01 {
    public static void main(String[] args) {
        int i=0;
        while (i<100){
            i++;
            System.out.println(i);
            if (i==30){
                break;
            }
        }
        System.out.println(" -----------------");
    }
}

contiune: 在循环语句的主体中,用于终止某次循环,跳过未执行的流程,继续执行新的循环。

public class DreakDemo01 {
    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");
        }
    }
}

练习:打印一个三角形

public class TestDemo01 {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {

            for (int j = 5; j >=i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <=i; j++) {
                System.out.print("*");
            }
            for(int j=1;j<i;j++){
                System.out.print("*");
            }
            System.out.println();

        }

    }
}

 

posted @ 2021-11-19 11:12  糖豆不加糖  阅读(30)  评论(0编辑  收藏  举报