ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA流程控制详解-含练习题

2022-02-22 21:00:34  阅读:124  来源: 互联网

标签:练习题 语句 JAVA int System case 详解 println out


JAVA学习-02-韩顺平老师

JAVA流程控制详解-含练习题

  • 分支控制
    • 单分支

      /*
      基本语法
      if (条件表达式) {
      	if语句块
      }
      */
      int a = 10;
      if ( a > 8 ) {
      	System.out.println("进入了if语句块");
      }
      
    • 双分支

      	/*
      基本语法
      if (条件表达式) {
      	if语句块
      } else {
      	else语句块
      }
      */
      int a = 10;
      if ( a > 8 ) {
      	System.out.println("进入了if语句块");
      } else {
      	System.out.println("进入了else语句块");
      }
      
    • 多分支

      	/*
      基本语法
      if (条件表达式) {
      	if语句块
      } else if {
      	else if 语句块
      } else {
      	else语句块
      }
      */
      int a = 10;
      if ( a > 8 && a <= 10) {
      	System.out.println("进入了if语句块");
      } else if (a >= 10 && a <= 12) {
      	System.out.println("进入了else if 语句块");
      } else {
      	System.out.println('进入了else语句块');
      }
      
    • 嵌套分支

      • 在分支语句中还含有分支语句
      	/*
      基本语法
      if (条件表达式) {
      	if () {
      
      	} else {
      
      	}
      } else {
      	else语句块
      }
      */
      int a = 10;
      int b = 100;
      if ( a > 8 && a <= 10) {
      	if( b > 77 ) {
      		System.out.println('b大于77');
      	} else {
      		System.out.println('b小于77');
      	}
      } else {
      	System.out.println('进入了else语句块');
      }
      
    • switch语句

      • 基本语法
      /*switch(表达式){
      	case 表达式常量1:
              	语句1;
             	[ break;]    // [ ] 表示可选
       	case 表达式常量2:
              	语句2;
              	[ break;]
               	......
      	case 表达式常量n:
              	语句n;
             	[ break;]
      	[default:语句n+1;]
      
      }
      
      */
      // 输出今天是今年的第几天
      import java.util.Scanner;
      public class test_3 {
      public static void main(String[] args) {
      	int sumDays = 0;
      	Scanner scan = new Scanner(System.in);
      	System.out.println("请输入年份:");
      	int year = scan.nextInt();
      	System.out.println("请输入月:(1-12)");
      	int mouth = scan.nextInt();
      	System.out.println("请输入日:(1-31)");
      	// 输入一个整型天数
      	int day = scan.nextInt();
      	switch (mouth){
      	case 12:
      		sumDays += 30;
      	case 11:
      		sumDays += 31;
      	case 10:
      		sumDays += 30;
      	case 9:
      		sumDays += 31;
      	case 8:
      		sumDays += 31;
      	case 7:
      		sumDays += 30;
      	case 6:
      		sumDays += 31;//6月24日 31+29+31+30+31+24
      	case 5:
      		sumDays += 30;
      	case 4:
      		sumDays += 31;
      	case 3:
      		if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
      			sumDays += 29;
      		}else {
      			sumDays += 28;
      		}
      		//sumDays += 29;
      	case 2:
      		sumDays += 31;
      	case 1:
      		sumDays += day;
      	System.out.println(year + "年" + mouth + "月" + day + "日是" + year +"年的第" +sumDays + "天");
      		
      	}
      }
      }
      
      • 注意细节
        • 1.表示式的数据类型应和case的数据类型一致或者是可以自动转换成可以比较的类型
        • 2.表达式中的返回值类型必须是(byte,short,char,int,enum,String)
        • 3.case的值必须是常量
        • 4.default是可选的
        • 5.当满足一个case时,如果没有break,则会直接执行下一个case,不会进行判断,直到遇到break,才会退出
      • 练习
    import java.util.Scanner;
    public class SwitchExercise{
    
    	public static void main(String[] args) {
    		// 判断季节 (采用穿透的性质)
    		System.out.println("请输入1-12月:");
    		Scanner myScanner = new Scanner(System.in);
    		int month = myScanner.nextInt();
    		switch(month){
    			case 3:
    			case 4:
    			case 5:
    			System.out.println(month + "月是春季");
    			break;//必须要有一个break来终止穿刺
    			case 6:
    			case 7:
    			case 8:
    			System.out.println(month + "月是夏季");
    			break;
    			case 9:
    			case 10:
    			case 11:
    			System.out.println(month + "月是秋季");
    			break;
    			case 1:
    			case 2:
    			case 12:
    			System.out.println(month + "月是冬季");
    			break;
    			default:
    			System.out.println("请输入正确的月份");
    			break;
    		}
    	}
    }
    	```
    
  • 循环控制
    • for循环

      • 简单循环
      public class forExercise {
      	public static void main(String[] args) {
      				/*
      				基本语法
      				for(初始化语句;循环条件语句;控制条件语句) {
      					循环体语句
      				}
      				*/
      				for(int i = 1; i <= 3; i++ ) {
      					System.out.println("我爱写代码");
      				}
      	}
      }
      
      
      • 嵌套循环
        • 内层循环是外层循环的循环体语句
      public class forExercise {
      	public static void main(String[] args) {
      		/*
      		基本语法
      		for(初始化语句;循环条件语句;控制条件语句) {
      			循环体语句
      		}
      		*/
      		for(int i = 1; i <= 3; i++ ) {
      
      			for(int j = 1; j <= 2; j++) {
      				System.out.println("我爱写代码");
      			}
      		}
      	}
      }
      
      • 练习题
      import java.util.Scanner; // 导入类
      public class MulForExercise {
      	public static void main(String[] args) {
      		/* 1.统计2个班的情况,每个班有3个同学
      		   - 求出各班的平均分和所有班级的平均分
      		   - 统计及格人数
      		*/
      		 Scanner myScanner = new Scanner(System.in);
      		 int classNum = 2;
      		 int stuNum = 3;
      		 double allScore = 0; // 所有总分
      		 int passNum = 0; // 统计及格人数
      		 for(int i = 1; i <= classNum; i++) {
      		 	double totalScore = 0; // 统计每个班的总分
      		 	for(int j = 1; j <= stuNum; j++) {
      		 		System.out.print("请输入" + i + "班" + j + "个同学的成绩:");
      		 		int socre = myScanner.nextInt();
      		 		totalScore += socre;
      		 		allScore += socre;
      		 		if( socre >= 60 ) {
      		 			passNum += 1;
      		 		}
      		 	}
      		 	System.out.println(i + "班的平均分为:" + (int)(totalScore/stuNum));
      		 }
      		 System.out.println("总分数为:" + allScore + "总平均分为" + (allScore/(stuNum*classNum)));
               // 2.打印九九乘法表
      			for(int i = 1; i <= 9; i++) {
      
      				for(int j = 1; j <= i; j++) {
      					System.out.print(i + "x" + j + "\t");
      				} 
      				System.out.println(""); // 换行
      			}
      		}
      	}
      
    • while循环

      • 基本语法
      /*
      while(条件表达式){
      	循环体语句
      	条件控制语句
      }
      */
      int num = 1;
      while(num < 10) {
      	System.out.println("num=" + num);
      	num ++;
      }
      
      • 注意细节
        • 条件表达式必须要能够返回一个boolean类型的值
        • while必须要有条件控制语句,不然会形成死循环
    • dowhile循环

      • 基本语法
      /*
      do {
      	循环体语句
      	条件控制语句
      } while(条件表达式)
      */
      int num = 1;
      do {
      	System.out.println("num=" + num);
      	num ++;
      } while(num < 10);
      
      • 注意事项
        • 条件表达式必须要能够返回一个boolean类型的值
        • dowhile语句,循环体一定会被执行一次
    • braek、continue、return控制语句

      • break
        • break 用于中断此次的循环,直接跳循环,但是不退出程序
        • 一般用于 while、for、dowhile、switch
      • continue
        • continue 用于跳过此次循环,直接进入下一循环,也不退出程序
        • 一般用于 while、for、dowhile、switch
      • return
        • return 用于退出程序,直接结束程序的执行,循环后的代码不再执行
      • 三者的异同点
        • continue、break 两者都不会退出程序,循环后的代码仍可以执行
        • continue、break 可以通过标签 label 来指定跳出哪一级循环
        public class forExercise {
        	public static void main(String[] args) {
        		/*
        		基本语法
        		for(初始化语句;循环条件语句;控制条件语句) {
        			循环体语句
        		}
        		*/
        		label1:
        		for(int i = 1; i <= 3; i++ ) {
        
        			label2:
        			for(int j = 1; j <= 2; j++) {
        				System.out.println("我爱写代码");
        				if(j == 2) {
        					// break; // 默认是跳出内层循环
        					break label1 // 跳出外层循环
        				}
        			}
        		}
        	}
        }
        
    • 流程控制作业

    public class ControlProcessExercise {
    	public static void main(String[] args) {
    		/*
    		某人有100000元,经过一个路口,需要缴费:
    		1.当现金>50000元时,每次交5%
    		2.当现金<=50000元时,每次交1000
    		可以经过多少次路口?
    		*/
    		int money = 100000;
    		int times = 0;
    		while(money > 0) {
    			if( money >50000 ) {
    				money -= money * 0.05;
    				times +=1;
    			} else if (money <= 50000 && money >= 1000) {
    				money -=1000;
    				times +=1;
    			} else{
    				break;
    			}
    		}
    		System.out.println("可以经过" + times + "次路口");
            // 二、判断一个整数是不是水鲜花数
    		System.out.print("请输入一个整数:");
    		int num = myScanner.nextInt();
    		int verification = num;//保存num 后面用来验证是否想的
    		int total = 0;
    		while(num >0) {
    			int remainder = num % 10;
    			total += remainder*remainder*remainder;
    			num = num / 10;
    		}
    		if( total == verification) {
    			System.out.println(verification + "这个数是水仙花数");
    		} else {
    			System.out.println(verification + "这个数不是水仙花数");
    		}
    
    		// 三、输出1-100之间的不能被5整除的数,每五行一个
    		int count = 0; // 用来控制换行
    		for (int i =1; i<=100; i++) {
    			if(i % 5 == 0) {
    				continue;
    			} else {
    				System.out.print(i + "\t");
    				count ++;
    				if(count == 5){
    					System.out.println("");
    					count = 0;
    				}
    			}
    		}
            // 四、 1-1/2+1/3+1/4....1/100 的和
    		double total = 0;
    		// 注意初始化定义,1/(double)i
    		for(double i = 1; i <= 100; i++) {
    			if(i % 2 == 0) {
    				total -= (1 / i);
    			} else {
    				total += (1 / i);
    			}
    		}
    		System.out.println(total); // 0.688172179310195
    
    		// 五、计算 1 + (1+2) + (1+2+3) + ... + (1+...+100)
    		int total = 0;
    		for (int i = 1; i <= 100; i++) {
    			
    			for(int j = 1; j <= i; j++) {
    				total += j;
    			}
    		}
    		System.out.println(total);// 171700
            		/*
    		六、打印空心等腰三角形
    		    *
    		   * *
    		  *   *
    		 *     *
    		*********
    		*/
    		int starLevel = 10;
    		// 控制打印行数
    		for(int i = 1; i <= starLevel; i++) {
    			for(int k = starLevel-i; k >0; k--) {
    				System.out.print(" ");
    			}
    			// 控制打印个数
    			for(int j = 1; j <= 2*i - 1; j++) {
    
    				// 如果是 第一个或是最后一个打印星星,或者最后一行打印星星
    				if(j == 1 || j == 2*i - 1 || i == starLevel) {
    					System.out.print("*");
    				} else {
    					System.out.print(" ");
    				}
    			}
    			System.out.println(""); // 换行
    		}
    	}
    }
    ```
    

自己的小总结,如出现错误希望大家纠正交流学习!

标签:练习题,语句,JAVA,int,System,case,详解,println,out
来源: https://blog.csdn.net/sgr011215/article/details/123077096

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有