第四章 流程控制

一、要点总结

流程控制语句:复合语句、条件语句、循环语句。

使用复合语句可以为变量定义一个有效区域;

通过使用if与switch语句,可以基于布尔类型的测试,将一个程序分成不同的部分;

通过while、do...while循环语句和for循环语句,可以让程序的一部分重复的执行,直到满足某个终止循环的条件。

二、几个小练习

1、计算1+1/2!+1/3!...+1/20!

/**
 * 计算1+1/2!+1/3!...+1/20!
 * @author DELL
 *
 */
public class Eight {
  public static void main(String[] args) {
	  int j=1;//j表示第几个数
	  double sum=0,a=1;
	  while(j<=20){
		  sum=sum+a;
		  j++;
		  a=a*(1.0/j);//1一定要写成1.0
	  }
	  System.out.println(sum);
}
  
}

2、打印菱形

/**
 * 打印菱形
 * @author DELL
 *
 */
public class Seven {
	public static void main(String[] args) {
		int line=5;//总行数
		int maxLine=(line+1)/2; //最中间的一行*最多
		for(int i=1;i<=maxLine;i++){//i表示行数
			for(int space=1;space<=maxLine-i;space++){//空格数=maxLine-当前行数
				System.out.print("  ");
			}
			for(int star=1;star<=(i*2)-1;star++){//星数=当前行数*2-1
				System.out.print("* ");
			}
	        System.out.println();//换行
		}

		for(int i=1;i<=maxLine-1;i++){//剩余行数=中间行数-1
			for(int space=1;space<=i;space++){
				System.out.print("  ");//空格数等于当前行数
			}
			for(int star=1;star<=(maxLine-i)*2-1;star++){//星数=从下往上数的行数*2-1
				System.out.print("* ");
			}
			System.out.println();//换行
		}
	}
}

3、百钱买百鸡

/**
 * 百钱买百鸡
 * @author DELL
 *
 */
public class six {
	public static void main(String[] args) {
		int cock,hen,chick;
	    for(cock=1;cock<=20;cock++){
	    	for(hen=1;hen<=33;hen++){
	    		for(chick=3;chick<=99;chick+=3){
	    			if(cock*5+hen*3+chick/3==100){//百钱
	    				   if(cock+hen+chick==100){//百鸡
	    					   System.out.println("公鸡:"+cock+"母鸡:"+hen+"小鸡:"+chick);
	    				   }
	    			}
	    		}
	    	}
	    }	
	}
    
}

4、计算从1加到100的和

/**
 * 使用for循环,计算从1加到100的和
 * @author DELL
 *
 */
public class five {
   public static void main(String[] args) {
	 int sum=0;
	 for(int i=1;i<=100;i++){
		 sum=sum+i;
	 }
	 System.out.println(sum);
}
}


/**
 * 求1到100的和 使用while循环
 * @author DELL
 *
 */
public class Three {
	public static void main(String[] args) {
		int i=1;
		int sum=0;
		while(i<=100){
			sum=sum+i;
			i++;
		}
		System.out.println("值为"+sum);
	}

}

5、密码验证如何实现

import java.util.Scanner;

/**
 * 密码验证使用do...while
 * @author DELL
 *
 */
public class Four {
   public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);//扫描器
	String pwd1="0";
	String pwd2="-1";
	do{
		System.out.println("请输入密码");
		pwd1=sc.nextLine();
		System.out.println("请再次输入密码");
		pwd2=sc.nextLine();
		if(!pwd1.equals(pwd2)){
			System.out.println("您输入的密码不一致,请再次输入!");
		}
	}while(!pwd1.equals(pwd2));
	System.out.println("您已成功设置密码");
  }
}

6、判断奇数还是偶数

/**
 * 判断一个数是奇数还是偶数
 * @author DELL
 *
 */
public class Two {
	public static void main(String[] args) {
		int num=5;
		if(num%2==0){
			System.out.println(num+"是偶数");
		}else{
			System.out.println(num+"是奇数");
		}
	}

}

三、易错点

1、if条件语句

  • if(表达式)后加;
  • 不加{}

2、if...else语句

  • 如果有多个if,语句序列又未加{},那么else会和最近的if对应
  • else不能单独使用,必须和if关键字一起出现

3、布尔表达式书写规范

  • ==:逻辑判断    =:赋值
  • if(flag==true)正确  if(flag=true)错误 
  • 直接写成if(flag)  flag本身就是逻辑表达式

4、while循环语句

  • while(条件表达式)表达式不允许为空
  • 表达式不应该是常数
  • while(true){循环体}会无限循环
  • 循环体中要有改变条件表达式值的语句,否则将成为死循环eg:x++

5、do...while循环语句

  • while后不要少写分号
  • while(条件表达式)表达式不允许为空
  • 表达式不应该是常数
  • 循环体中要有改变条件表达式值的语句,否则将成为死循环eg:x++

6、break和continue的区别

  • break会跳出包含它的最内层的循环结构
  • continue不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分,重新开始执行循环
上一篇:SQL Server数据库大型应用解决方案总结


下一篇:What does githubers do