0416/0417分支和循环结构

0416/0417分支和循环结构

基本程序结构可分为 顺序结构 分支结构 循环结构

1.分支结构

【建议】写分支循环结构时可先写好程序框架

1.1if语句
三种循环结构
if(布尔结论){...}
if(布尔结论){...}else{...}
if(布尔结论){...}else if{...}[else{...}]


//小技巧TIP,了解即可
【注意】如果 if(或 else if,或 else) 条件成立时的执行语句只有一条,是可以省略大括号的!但如果执行语句有多条,那么大括号就是不可或缺的。
int days = 31;
if(days > 30)
    System.out.println("本月是大月");
else
    System.out.println("本月是小月");

1.2switch语句
switch(int char 枚举类型 String){
    case:1
        //语句体
        break;
    case:2
        //语句体
        break;
    default:
        //语句体
}

【注意点】
    switch 只能根据以上类型具体数值进行判断,if 能对布尔表达式进行判断再选择,if可操作范围型的数据
    break 关键字用于结束switch语句段    
        
    switch 后的条件会与case后的判断的内容会区分大小写 
 
    JDK1.5 支持枚举类型
    JDK1.7 支持String类型

    switch 语句支持向下穿透,本case无break语句会继续向下执行,直到遇到break或者(switch case)的大括号}
    default 可以省略,代码编译没有语法错误,但失去了一个异常情况处理方式》》AJCG阿里巴巴Java开发规范中,是不推荐省略default
        
    在switch - case结构中,不允许出现相同的case选项,代码无法进行操作选择,因为所有case选择是平级的
1.3分支结构总结
分支结构用于处理代码中出现的一些需要判断,并且按按条件处理的情况!!!
	1. 条件约束考虑清楚
	2. 处理的过程考虑清楚
	3. 数据类型选择

2.循环结构

2.1while/for循环结构
while语句适用于知道判断条件结果的
for语句适用于知道循环次数的

三种循环语句都是:条件满足一直循环,循环到条件不满足时停止

代码中一定存在需要循环出现的情况,如果不使用循环,会导致以下一些问题
	1. 阅读性极差!!!
	2. 维护性极差!!!
	3. 代码冗余!!!


2.2while循环
while (/* 循环条件 true or false */) {
    // 循环体
    // (循环条件变更)
}
/*
执行流程:
	当前程序运行到while循环结构时,首先判断while之后的小括号里面的循环条件是否为true,如果为true,执行循环体,在回到循环条件判断,直到循环条件为false,终止循环!!!
*/
2.3do-while循环
do {
    // 循环体
    // (循环条件变更)
} while (/* 循环条件判断 */);
/*
执行流程:
	当程序执行到do - while循环结构时,首先执行一次循环体(循环条件变更),再来判断while中循环条件判断是否为true,如果为true,继续执行,如果为false,终止循环。
【注意】
	1. while(condition);;;;;;;;;;;;;;;;;;;;;;;;;;; 这里英文分号
	2. 执行do - while需要明确第一次循环会不会存在隐患
【注意】
	do {
		ch += 1;//正确操作,建议操作
		//ch ++;//正确操作
		//ch = ch +1; //错误操作 char为字符类型,无法保存int类型!!!
	} while (ch <= 'Z');
*/
2.4循环总结
1. 循环过程中最核心的内容就是循环变量,需要对于循环变量的执行的过程中数值变量完全掌握!!!如果无法明确循环的次数,循环变量的值,循环的过程,可以将循环代码中变量的变更过程记录。

2. 循环过程中需要注意无限循环问题,控制无限循环问题的出现。一定要保证循环条件有效性或者代码中存在一个跳出循环的机制。

3. do while循环中,第一次循环体的执行是没有经过任何的条件判断的,需要注意!
【已知,可控】程序最好达到

4. while和do while循环结构是可以进行互换的。

5. 然后在while和do while之间考虑使用的情况下,一般推荐使用while循环。但是不代表do while没有实际的使用效果。
2.5循环控制语句
continue 跳出本次循环继续下一次循环
break    终止此循环

2.6案例
/*案例1
    *
   * *
  * * *
 * * * *
* * * * *
*/
class Stars{
	public static void main(String[] args){
		int n = 5;
		for ( int i = 1;i<= n;i++){
			for (int j = 1;j<= n - i;j++){
				System.out.print(" ");
			}
			
			for (int k = 1;k <=i;k++){
				System.out.print("* ");
			}
			System.out.println("");
		}
	}
}
/*案例2
乘法口诀表
*/
class Cheng{
	public static void main(String[] args) {
		for( int i = 1;i<=9;i++){
			for(int j = 1;j<=i;j++){
				System.out.print(i + "*" + j + "=" + (i*j) + "	");
			}
			System.out.println();
		}
	}
}

3.补充知识点

3.1Scanner
	Scanner是Java中提供的用于从控制台输入数据到代码中的一种方式,存在一些弊端,容易导致一些错误,这里只要求大家了解一些必要的方法。
	【Scanner操作哪里需要沾哪里】
	
Scanner使用流程
	1. 点技能点,Java程序本身是没有直接使用Scanner的能力,这里需要点技能点。
	官网操作【导包】
	固定格式:
		import java.util.Scanner;
		放在class代码上一行
	
	2. 需要得到一个Scanner的变量
	固定格式:
		Scanner sc = new Scanner(System.in);
	
	3. 选择执行对应的方法,从键盘上获取对应的数据
		获取int类型 
			int类型的变量 = sc.nextInt();
		获取float类型 
			float类型的变量 = sc.nextFloat();	
		获取double类型
        	double类型的变量 = sc.nextDouble();
		获取char类型 
			char类型的变量 = sc.nextLine().charAt(0);
3.2用户友好性提示
	代码运行需要站着用户的角度来思考问题。用户进行操作时,需要给予用户足够的提示和引导,告知用户当前操作如何完成,考虑代码的友好性!!!
	用户粘性问题!!!用户提示!!!用户友好性!!!
3.3 用户输入数据合法性判断
就算在提示中告知用户需要输入的数据范围是多少,但是用户在实际使用的过程中,依然存在输入错误的情况。需要对于用户输入的数据进行合法性判断,如果用户输入的内容符合我们的判断逻辑需求,进入数据处理过程。如果不符合要求,直接终止程序!!!
3.4综合案例
/*
学生成绩的等级划分:
	90 ~ 100 秀儿
	80 ~ 90 良儿
	70 ~ 80 中儿
	60 ~ 70 格儿
	60 以下 让你爹穿着拖鞋来学校一趟
*/

// 导包,让当前Java代码可以使用Scanner
import java.util.Scanner;

class Demo10 {
	public static void main(String[] args) {
		/*
		成绩考虑存在0.5的情况,需要使用浮点类型数据
		这里采用float类型,这里赋值一个初值
		*/
		float score = 0.0F;
	
		// 需要得到一个Scanner的变量
		Scanner sc = new Scanner(System.in);
		
		/* 提示用户操作 */
		System.out.println("请输入学生的成绩1 ~ 100:");
		score = sc.nextFloat();
		
		/* 
		验证用户输入数据的合法性 
		如果用户输入的数据不合法,终止程序!!!
		不合法: 输入数据 > 100 或者 < 0
		*/
		if (score > 100 || score < 0) {
			System.out.println("输入数据不合法!!!");
			// 程序退出
			System.exit(0);
		}
		
		/* 成绩等级判断 */
		if (score >= 90 && score <= 100) {
			System.out.println("秀儿");
		} else if (score >= 80) {
			System.out.println("良儿");
		} else if (score >= 70) {
			System.out.println("中儿");
		} else if (score >= 60) {
			System.out.println("格儿");
		} else {
			System.out.println("让你爹穿着拖鞋来学校一趟");
		} 
	}
}
System.exit(0); 程序退出语句
原文地址:https://www.cnblogs.com/raising/p/12716618.html