天天看点

Java基础——条件循环语句一、Java条件语句二、Java循环结构三、Java switch case

一、Java条件语句

1.if…else语法

if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}
           

2.if…else if…else语法

if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。

使用 if,else if,else 语句的时候,需要注意下面几点:

  • if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
  • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}
           

3.嵌套的if…else语法

if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      //如果布尔表达式 2的值为true执行代码
   }
}
           

二、Java循环结构

1.while

while是最基本的循环,它的结构为:

只要布尔表达式为 true,循环就会一直执行下去。

2.do…whlie

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

do {
       //代码语句
}while(布尔表达式);
           

**注意:**布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。

3.for

for(表达式1;表达式2;表达式3){
    ...代码块/循环体...
}
    //理解:
    表达式1:初始化变量
    表达式2:判断条件(结果必须是boolean,true-执行代码块,false-跳出循环语句)
    表达式3:更新变量
    //执行流程:
    1.初始化变量
    2.判断条件
    2.1 true:执行代码块,执行完毕后,再调用更新变量,最后重复第二步
    2.2 false:跳出循环语句
           

练习代码

import java.util.Scanner;
public class Test04{
	
	public static void main(String[] args){					
			//死循环:
				for(;;){
					System.out.println("死循环");
				}
				System.out.println("for循环以外的代码");
				
			//for循环变形记:
				注意:在for循环中定义的变量不能在循环外使用
				int i = 0;
				for(;i<5;){
					System.out.println("xx" + i);
					i++;
				}
				System.out.println(i);
				
			//需求1:循环录入5次int类型的数字,输出总和
				Scanner scan = new Scanner(System.in);
				int sum = 0;//总和
				for(int i = 1;i<=5;i++){
					System.out.println("请输入第" + i + "个数字:");
					int num = scan.nextInt();
					
					sum += num;
				}
				System.out.println("总和为:" + sum);
				
			//需求2:循环录入A同学的5门课成绩,计算平均分
				Scanner scan = new Scanner(System.in);
				int sum = 0;//总分
				for(int i = 1;i<=5;i++){
					System.out.println("请输入第" + i + "门成绩:");
					int num = scan.nextInt();
					sum += num;
				}
				System.out.println("平均分为:" + (sum/5));
				
			//需求3:循环录入5次int类型的数字,输出最大值
				Scanner scan = new Scanner(System.in);
				System.out.println("请输入第1个数字:");
				int max = scan.nextInt();//假设第一个数字为最小值(这样设计是防止用户输入的都是负数)
				
				for(int i = 2;i<=5;i++){
					System.out.println("请输入第" + i + "个数字:");
					int num = scan.nextInt();
					if(max < num){
						max = num;
					}
				}
				
				System.out.println("最大值为:" + max);
				
			//for循环嵌套练习:
			需求1:打印3行4列的长方形
				****
				****
				****
				for(int i = 0;i<3;i++){//外层循环控制行数
					for(int j = 0;j<4;j++){//内层循环控制列数
						System.out.print("*");
					}
					System.out.println();//换行
				}
				
			需求2:打印三角形
				*		i=0
				**		i=1
				***		i=2
				****	i=3
				*****	i=4
				for(int i = 0;i<5;i++){
					for(int j = 0;j<=i;j++){
						System.out.print("*");
					}
					System.out.println();
				}	
	}
	
}
           
package com.gun.work01;

public class work10 {

	public static void main(String[] args) {
		/**
		 * @desc 打印
		 *      
				*****
				****
				***
				**
				*
		 * 
		 * @author Y
		 */
		for(int i = 0;i < 5; i++){

			for(int j = 0;j < 5-i; j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}
           
package com.gun.work01;

public class work11 {

	public static void main(String[] args) {
		/**
		 * @desc 打印
		 *      
				*****
				 ****
				  ***
				   **
				    *
		 * 
		 * @author Y
		 */
		for(int i = 0;i <= 5; i++){
			for(int k =0;k<i;k++){
				System.out.print(" ");
			}
			for(int j = 5;j >= i; j--){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}
           
package com.gun.work01;

public class work12 {

	public static void main(String[] args) {
		/**
		 * 打印:
		 *      
				   *
				  ***
				 *****
				*******
		 *  
		 */
		for(int i = 0;i < 4 ; i++){
			for(int k =0;k < 3-i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j < 2*i+1; j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

           
package com.gun.work01;

public class work13 {

	public static void main(String[] args) {
		/**
		 * 打印:
		 *      
				   *
				  * *
				 *   *
				*******
		 * 
		 */
		for(int i = 0;i < 4 ; i++){
			for(int k =0;k < 4-i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j < 2*i+1; j++){
				if(i==0||i==3||j==0||j==2*i){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
					
			}
			System.out.println();
		}
	}
}

           
package com.gun.work01;

public class work14 {

	public static void main(String[] args) {
		/**
		 * 打印:
		 *      
				*******
				 *****
				  ***
				   *
		 * 
		 */
		for(int i = 0;i < 4 ; i++){
			for(int k =0;k < i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j < 7- 2*i; j++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

           
package com.gun.work01;

public class work15 {

	public static void main(String[] args) {
		/**
		 * 打印:
		 *      
				*******
				 *   *
				  * *
				   *  
		 * 
		 */
		for(int i = 0;i < 4 ; i++){
			for(int k =0;k < i;k++){
				System.out.print(" ");
			}
			for(int j = 0;j < 7- 2*i; j++){
				if(i==0||i==3||j==0||j==7- 2*i-1){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}
}

           

for vs while vs do-while

1.语法结构的区别:
注意:判断条件都是boolean值,true-循环,false-跳出循环
			for(初始化变量;判断条件;更新变量){}
			while(判断条件){}
			do{}while(判断条件);
2.执行顺序的区别:
			for:先判断,再执行
			while:先判断,再执行
			do-while:先执行一遍,再判断	
3.应用场景的区别:
			循环次数确定时:for
			循环次数不确定时:while、do-while
           

4.增强for循环

Java5 引入了一种主要用于数组的增强型 for 循环。

Java 增强 for 循环语法格式如下:

for(声明语句 : 表达式) {
    //代码句子 
}
           

**声明语句:**声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

**表达式:**表达式是要访问的数组名,或者是返回值为数组的方法。

5.break

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。

break 跳出最里层的循环,并且继续执行该循环下面的语句。

6.continue

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。

在 for 循环中,continue 语句使程序立即跳转到更新语句。

在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

三、Java switch case

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch case 语句语法格式如下:

switch(expression){    
    case value :       //语句       
        break; //可选    
    case value :       //语句       
        break; //可选    
        //你可以有任意数量的case语句   
    default : //可选       
        //语句 
}
           

switch case 语句有如下规则:

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。