Java控制语句(Java程序控制语句)

控制语句分为三类:顺序、选择和循环。

“顺序结构”代表“先执行 a,再执行 b”的逻辑。比如,先相亲,再跟相亲对象订婚,最后再结婚;顺序结构即按照书写顺序执行每一条语句。

“条件判断结构”代表“如果…,则…”的逻辑。比如,如果看到红灯,则停车;

“循环结构”代表“如果…,则重复执行…”的逻辑。比如,如果相亲失败则继续相亲。

这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过它们来表达。

一、条件判断结构

主要的条件判断结构有:if 结构和 switch 结构。而 if 结构又可以分为 if 单分支结构、if-else 双分支结构、if-else if-else 多分支结构。

1.if 单分支结构

语法结构:

if(布尔表达式){

语句块

}

if 语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。

2.if-else 双分支结构

语法结构:

if(布尔表达式){

语句块 1

}else{

语句块 2

}

当布尔表达式为真时,执行语句块 1,否则,执行语句块 2。也就是 else 部分。

3.if-else if-else 多分支结构

语法结构:

if(布尔表达式 1) {

语句块 1;

} else if(布尔表达式 2) {

语句块 2;

}……

else if(布尔表达式 n){

语句块 n;

} else {

语句块 n+1;

}

当布尔表达式 1 为真时,执行语句块 1;否则,判断布尔表达式 2,当布尔表达式 2 为

真时,执行语句块 2;否则,继续判断布尔表达式 3······;如果 1~n 个布尔表达式均判定为

假时,则执行语句块 n+1,也就是 else 部分。

二、switch 语句

switch 多分支结构(多值情况)

语法结构:

switch (表达式) {

case 值 1:

语句序列 1;

[break];

case 值 2:

语句序列 2;

[break];

… … …

… …

[default:

默认语句;]

}

switch 语句会根据表达式的值从相匹配的 case 标签处开始执行,一直执行到 break语句处或者是 switch 语句的末尾。如果表达式的值与任一 case 值不匹配,则进入 default语句(如果存在 default 语句的情况)。根据表达式值的不同可以执行许多不同的操作。switch 语句中 case 标签在 JDK1.5之前必须是整数(long 类型除外)或者枚举,不能是字符串,在 JDK1.7 之后允许使用字符串(String)。

当布尔表达式是等值判断的情况,可以使用 if-else if-else 多分支结构或者 switch 结构,如果布尔表达式是区间判断的情况,则只能使用 if-else if-else 多分支结构。switch 多分支结构的流程图如下:

Java控制语句(Java程序控制语句)

三、循环结构

循环结构分两大类,一类是当型,一类是直到型。

当型:当布尔表达式条件为 true 时,反复执行某语句,当布尔表达式的值为 false 时才停止循环,比如:while 与 for 循环。

直到型:先执行某语句, 再判断布尔表达式,如果为 true,再执行某语句,如此反复,直到布尔表达式条件为 false 时才停止循环,比如 do-while 循环。

1.while 循环

语法结构:

while (布尔表达式) {

循环体;

}

在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。while循环流程图:

Java控制语句(Java程序控制语句)

2.do-while 循环

语法结构:

do {

循环体;

} while(布尔表达式) ;

do-while 循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。do-while 循环的循环体至少执行一次。do-while 循环结构流程图:

Java控制语句(Java程序控制语句)

3.循环结构(for)

语法结构:

for (初始表达式; 布尔表达式; 迭代因子) {

循环体;

}

for 循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for 循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为 true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。

初始化部分设置循环变量的初值、条件判断部分为任意布尔表达式、迭代因子控制循环变量的增减、for 循环在执行条件判定后,先执行的循环体部分,再执行步进。

for 循环结构的流程图:

Java控制语句(Java程序控制语句)

4.嵌套循环

在一个循环语句内部再嵌套一个或多个循环,称为嵌套循环。while、do-while 与 for循环可以任意嵌套多层。一般工作中多见的就是两层。

5.break 语句和 continue 语句

在任何循环语句的主体部分,均可用 break 控制循环的流程。break 用于强行退出循环,不执行循环中剩余的语句。

continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。continue 用在 while,do-while 中,continue 语句立刻跳到循环首部,越过了当前循环的其余部分。continue 用在 for 循环中,跳到 for 循环的迭代因子部分。

四、控制语句应用实例

1.判断一年是否为闰年

满足这两个条件的整数可以称为闰年:第一,能被4整除但不能被100整除;第二,能被400整除。代码:

package cn.pxy.test;

import java.util.Scanner;

public class LeapYear {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入年份:");
		long year=scan.nextLong();
		if(year%4==0&&year%100!=0||year%400==0) {
			System.out.println(year+"年是闰年!");
		}else {
			System.out.println(year+"年不是闰年!!");
		}
	}
}

运行结果:

Java控制语句(Java程序控制语句)

Java控制语句(Java程序控制语句)

2.验证登录信息的完整性

利用if-else语句进行多条件判断实现登录信息的验证,代码:

package cn.pxy.test;

import java.util.Scanner;

public class CheckLogin {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入登录名:");
		String username=scan.nextLine();
		System.out.println("请输入密码:");
		String password=scan.nextLine();
		if(!username.equals("mr")) {
			System.out.println("用户名不正确。");
		}else if(!password.equals("mrmrmr")) {
			System.out.println("密码错误。");
		}else {
			System.out.println("登录成功!");
		}
	}
}

测试:

Java控制语句(Java程序控制语句)

Java控制语句(Java程序控制语句)

3.为新员工分配部门

利用Switch语句根据用户输入的信息确定员工应该分配到哪个部门,代码:

package cn.pxy.test;

import java.util.Scanner;

public class Example {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入新员工姓名:");
		String name=scan.nextLine();
		System.out.println("请输入新员工会的编程语言:");
		String language=scan.nextLine();
		//根据语言为员工分配部门
		switch(language.hashCode()){
			//java的哈希码
			case 3254818:
			case 2301506:
			case 2269730:
				System.out.println("员工"+name+"被分配到Java开发部门");
				break;
			//C#的哈希码
			case 3104:
			case 2112:
				System.out.println("员工"+name+"被分配到C#项目维护部门");
				break;
			default:
				System.out.println("本公司不需要"+language+"语言的开发人才");
		}
	}
}

运行测试:

Java控制语句(Java程序控制语句)

Java控制语句(Java程序控制语句)

4.使用while与自增运算符循环遍历数组

利用自增运算符结合while循环获取每个数组元素的值,然后把他们输出到控制台中。代码:

package cn.pxy.test;

public class ErgodicArray {
	public static void main(String[] args) {
		//创建数组
		String[] aves=new String[] {"喜鹊","乌鸦","凤凰","朱雀","乌鸡","百灵"};
		int index=0;
		System.out.println("百鸟园里有什么,有:");
		while(index<aves.length) {
			System.out.print(aves[index++]+"t");
		}
	}
}

运行结果:

Java控制语句(Java程序控制语句)

5.使用for循环输出杨辉三角

杨辉三角由数字排列,可以把它看做一个数字表,其基本特性是两侧数值均为1,其他位置的数值是其正上方的数值与左上角数值之和。代码:

package cn.pxy.test;

public class YangHuiTriangle {
	public static void main(String[] args) {
		System.out.println("杨辉三角");
		//创建二维数组
		int triangle[][]=new int[8][];
		//遍历二位数组的第一层
		for(int i=0;i<triangle.length;i++) {
			triangle[i]=new int[i+1];
			//遍历第二层数组
			for(int j=0;j<triangle[i].length-1;j++) {
				//将两侧的数组元素赋值为1
				if(i==0||j==0||j==triangle[i].length-1) {
					triangle[i][j]=1;
				}else {
					//其他数值通过公式计算
					triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];
				}
				//输出数组
				System.out.print(triangle[i][j]+"t");
			}
			System.out.println();
		}
		
	}
}

运行结果:

Java控制语句(Java程序控制语句)

6.使用嵌套循环在控制台输出九九乘法表

代码如下:

package cn.pxy.test;

public class MultiplicationTable {
	public static void main(String[] args) {
		for(int i=1;i<=9;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print(j+"X"+i+"="+i*j+"t");
			}
			System.out.println();
		}
	}
}

运行结果:

Java控制语句(Java程序控制语句)

7.用while循环计算1+1/2!+1/3!+...+1/20!

由于double无法精确显示运算结果,这里使用BigDecimal类型。

package cn.pxy.test;

import java.math.BigDecimal;

public class Example {
	public static void main(String[] args) {
		BigDecimal sum=new BigDecimal(0.0);
		BigDecimal factorial=new BigDecimal(1.0);
		int i=1;
		while(i<=20) {
			sum=sum.add(factorial);
			++i;
			factorial=factorial.multiply(new BigDecimal(1.0/i));
		}
		System.out.println("1+1/2!+1/3!+...+1/20!的结果是:n"+sum);
	}
}

运行结果,由于运行结果精度高,所以小数部分比较长,这里设置了控制台自动换行,如果没设置的话结果是一行:

Java控制语句(Java程序控制语句)

8.for循环输出空心的菱形

代码:

package cn.pxy.test;

public class Diamond {
	public static void main(String[] args) {
		printHollowRhombus(10);
	}
	public static void printHollowRhombus(int size) {
		if(size%2==0) {
			//计算菱形大小
			size++;
		}
		for(int i=0;i<size/2+1;i++) {
			for(int j=size/2+1;j>i+1;j--) {
				//输出左上角位置的空白
				System.out.print(" ");
			}
			for(int j=0;j<2*i+1;j++) {
				if(j==0||j==2*i) {
					//输出菱形上半部边缘
					System.out.print("*");
				}else {
					//输出菱形上半部空心
					System.out.print(" ");
				}
			}
			System.out.println();
		}
		for(int i=size/2+1;i<size;i++) {
			for(int j=0;j<i-size/2;j++) {
				//输出菱形左下角空白
				System.out.print(" ");
			}
			for(int j=0;j<2*size-1-2*i;j++) {
				if(j==0||j==2*(size-i-1)) {
					//输出菱形下半部边缘
					System.out.print("*");
				}else {
					//输出菱形下半部空心
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}
}

运行结果:

Java控制语句(Java程序控制语句)

9.break终止循环体的使用

代码:

package cn.pxy.test;

public class BreakCyc {
	public static void main(String[] args) {
		System.out.println("------终止单层循环------------");
		//创建数组
		String[] array=new String[] {"香蕉","苹果","梨","荔枝","葡萄","荔枝"};
		System.out.println("在发现第一个荔枝前,都有什么水果?");
		for(String string:array) {
			if(string.equals("荔枝")) {
				break;
			}
			System.out.print("有:"+string+"tt");
		}
		System.out.println();
		System.out.println("----------终止双层循环------");
		//创建成绩数组
		int[][] myScores=new int[][] {{67,68,63,22,66},{55,68,79,95,44},{95,97,92,93,81}};
		System.out.println("这次考试成绩:n数学t语文t英语t美术t音乐");
		No1:for(int[] is:myScores) {
			for(int i:is) {
				System.out.print(i+"t");
				//如果小于60终止所有输出
				if(i<60) {
					System.out.println("n等等,"+i+"分的是什么?为什么不及格?");
					break No1;
				}
			}
			System.out.println();
		}
	}
}

运行结果:

Java控制语句(Java程序控制语句)

10.continue终止某次循环过程

代码:

package cn.pxy.test;

public class CycFilter {
	public static void main(String[] args) {
		//创建数组
		String[] array=new String[] {"老鹰","乌鸦","朱雀","喜鹊","朱雀","百灵","布谷鸟","朱雀"};
		System.out.println("花园里有很多鸟,朱雀有几只呢,让我们数一数:");
		int count=0;
		for(String string:array) {
			if(string.equals("朱雀")) {
				System.out.println("发现一只朱雀");
				count++;
				continue;
			}
			System.out.println("数朱雀时发现了:"+string);
		}
		System.out.println("一共有:"+count+"只朱雀");
	}
}

运行结果:

Java控制语句(Java程序控制语句)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论