【java学习笔记】Java控制流程(用户交互、顺序、选择、循环结构)

一、用户交互 scanner

1.获取用户输入

  • 基本语法: Scanner s = new Scanner(System.in);
  • 通过next()与nextLine()方法截取输入字符串;
  • 使用hasNext() 与 hasNextLine()判断是否还有输入
  • next( ) :
    1.输入有效字符在结束
    2.输入有效字符遇到空格自动结束
    3.next ( ) 输入内容不能有空格的字符串,程序才能完整的读取全部信息
  • nextLine():
    1.以Enter 结束
    2.输入内容可以空白
  • 固定语法:
	Scanner s = new Scanner(System.in); // 接收用户的一个输入
	String str = scanner.next();//将输入内容转化
	scanner.close(); //用完以后关闭

2.交互联系

//输入一个数判断是不是整数,输入一个数,判断是不是小数
 		Scanner s = new Scanner(System.in);  //接收用户输入
        int i = 0;
        float f =0.0f;

        System.out.println("请输入一个整数:");

        if(s.hasNextInt()){
            i = s.nextInt();
            System.out.println("您输入的是整数:"+i);
        }else{
            System.out.println( i+"不是整数");
        }

        System.out.println("请输入一个小数:");
        if(s.hasNextFloat()){
            f = s.nextFloat();
            System.out.println("您输入小数是:"+f);
        }else {
            System.out.println(f + "不是小数");
        }
        s.close();
        //输入多个数字求总数 和 平均数。每输入一个数字用回车确认,输入非数字结束
        Scanner s =new Scanner(System.in);
        double sum = 0; //和
        int m =0; //输入了多少个数字
        System.out.println("计算数字的和还有平均数,输入over结束输入");
        System.out.println("请输入数字:");

        while (s.hasNextDouble()){
            double x = s.nextDouble();
            m++;
            sum = sum + x;
            System.out.println("请继续输入您想输的数字:");
        }
        System.out.println("和为:"+sum);
        System.out.println("平均数是:"+sum/m);

        s.close();

二、 顺序结构

  • 这个没啥可说的,自上而下,一次执行。
  • 任何一个程序的基本结构

三、选择结构(if、switch)

  1. if

    • 单选择结构、
      语法:

      if (布尔表达式){
      		语句1}
      
    • 双选择结构

      if(布尔){
      	语句1}else{
      	语句2//例子
      Scanner s = new Scanner(System.in);
      
      System.out.println("请输入成绩:");
      int score = s.nextInt();
      if (score < 60) {
          System.out.println("不及格");
      } else
          System.out.println("及格");
      
      s.close();
      
      
    • 多选择结构

      if(布尔){
      	语句1;
      }else if(布尔){
      	语句2;
      }else{
      	语句3;}
      //例子:
      Scanner s =new Scanner(System.in);
      System.out.println("输入成绩:");
      int score = s.nextInt();
      if(score == 100){
          System.out.println("优秀");
      }else if(score<100 && score>60){
          System.out.println("努力");
      }else {
          System.out.println("不及格");
      }
      s.close();
      
      
    • 嵌套语句

      	if(布尔){
      		if(布尔){
      		}
      	}
      
      
  2. switch

    • 多选择结构
    • 判断变量与一个系列中的某个值相等的从而分而治之
	switch(expression){
			case value;
					语句1breakcase value;
					语句2breakdefault;
					语句3}
//例子
        Scanner s=new Scanner(System.in);
        System.out.println("请输入成绩:");
        String grade = s.next();

        switch (grade){
            case "a":
                System.out.println("优秀");
                break;
            case "b":
                System.out.println("还行");
                break;
            case "c":
                System.out.println("凑活");
            case "d":
                System.out.println("加油吧!");
            default:
                System.out.println("认真点·");
        }
    }

四、循环结构(while、do while 、for)

1. while

while(){
	内容
}

2. do …while (至少执行一次)

do{
    
}while(布尔表达式);

3. for(;;)

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

练习1 计算0-100的全部奇数 和偶数的和

       //计算0-100中的奇数偶数和
       int sum=0;
       for (int i = 2; i < 101; i=i+2) { 
           sum = sum+i;
           System.out.println("i的值为:"+i + ",所有偶数的和为:"+sum);
       }
       
       System.out.println("===================================");
 
       int sum_ji=0;
       for (int ji = 1;  ji< 100; ji=ji+2) {
           sum_ji = sum_ji+ji;
       }
       System.out.println("所有奇数的和为:"+ sum_ji );

练习2 计算1-1000中能被5整除的数

        //1-1000中能被5整除的数
        int i=0;
        int a=1;

        while (i < 1001) {
            if (i % 5 ==0) {    //膜5等于0 那么就是能被5整除的数字
                System.out.print(i+"  ");
                a++;
                if(a%3 == 0){  //每行有3个数
                    System.out.print('\n');
                }
            }
            i++;
        }

练习3 打印99乘法表

        //打印99乘法表
        //1.打印第一列
        //2.把固定的1用一个循环抱起来
        //3.去掉重复的
        for(int a = 1; a<10; a++){
            for(int b= 1;b<= a ; b++){
                System.out.print(a +"x"+ b +"="+(a*b)+"     ");
            }
            System.out.println();
        }

五、增强for循环

1.结构:

	for(声明(元素):表达式(arrays 数组)){
    //代码语句
}

2.主要用于循环数组和集合

public static void main(String[] args) {
        int[] a ={1,2,3,4,5,6};

        for (int array: a ){
            System.out.println(array);
        }
    }

六、break、continue

1. break :(可以理解成辞职,一去不回)

	用于强行退出循环,不再执行循环结构剩下的语句(用于抵御switch穿透)退出循环

2. continue:(可以理解成请假,还回来)

	 终止某次循环,紧接着执行下一次循环,跳过本次循环

练习6:打印一个金字塔

分析:

  • 1.先打印出一个三角形
    图中红线部分

在这里插入图片描述
第一行打印5个空格
第二行打印4个空格
第三行打印3个空格
·······
最后一行打印一个空格

代码为:

        for(int i =0;i<5;i++){
            for(int j=5;j>i;j--){
                System.out.print(" ");
            }
            
  • 2 在打印出三角形的一半

在这里插入图片描述
思路同上

        for(int i =0;i<5;i++){
            for(int j=5;j>i;j--){
                System.out.print(" ");
            }
            for(int j=0;j<=i;j++){     
             //第一行打印1个@ 
             //第二行打印2个@ 
             //逐行递增
                System.out.print("@");   
            }

3.打印剩下的半个三角

再嵌套一个循环
第一行打印1个
第二行打印2个
逐行递增

最后:代码如下

public static void main(String[] args) {
        for(int i =0;i<5;i++){    //逐行打印
            for(int j=5;j>i;j--){ 
                System.out.print(" ");
            }
            for(int j=0;j<=i;j++){
                System.out.print("@");
            }
            for(int j=1;j<=i;j++){
                System.out.print("@");
            }
            System.out.println();

        }

运行一下:
在这里插入图片描述















自学内容,来源学习资料来源“kuangstudy.com”


版权声明:本文为weixin_45326506原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。