流程控制
复合语句:java的复合语句是以整个区块为单位的语句,所以又称块语句,复合语句you7开括号“{”开始,“}”结束
条件语句
if条件语句
if:效果为“如果满足某条件就执行某段语句”
语法如下:
if(条件表达式){
语句序列
}
如果语句序列中只有一条语句,则可以省略条件语句中的“{}”
例4.1:
public class liti4_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int phoneNumber = 123456789; //定义一个int型变量phoneNumber并赋值123456789
if (phoneNumber != 84972266) { //判断phoneNumber是否为84972266
System.out.print("对不起,您拨打的号码不存在!"); //输出
}
}
}
代码运行结果:
流程图表示算法:
if...else语句
if...else:如果满足某条件,就执行某种处理,否则执行另一种处理
语法如下:
if(条件表达式){
语句序列1
}else{
语句序列2
}
例4.2:
public class liti4_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int password = 987654321; //定义int型password赋值987654321
if(123456789 == password) { //判断password是否为123456789
System.out.print("密码正确,欢迎登录"); //正确时的输出
}else { //否则
System.out.print("密码错误,拒绝登录");//错误时输出
}
}
}
代码运行结果:
流程图表示算法:
if...else if多分支语句
if...else if:如果满足某条件,就进行某种处理,否则如果满足另一条件则执行另一种处理
语法如下:
if(条件表达式1){
语句序列1
}else if(条件表达式2){
语句序列2
}...else{
语句序列n
}
例4.3:
public class liti4_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("欢迎光临,请问有多少人用餐?");//输出
int count = 9; //定义一个int型变量count赋值9
System.out.println("回答:"+ count + "人"); //输出
if(count <= 4) { //判断如果count小于或等于4则输出下行代码
System.out.println("客人请到大厅4人桌用餐");//输出
}else if(count > 4 && count <= 8) { //否则如果count大于4并且小于或等于8则输出下行代码
System.out.println("客人请到大厅8人桌用餐");
}else if(count > 8 && count <= 16) {
System.out.println("客人请到楼上包厢用餐");
}else { //否则输出下行代码
System.out.print("抱歉,我们目前没有那么大的包厢");
}
}
}
代码运行结果:
流程图表示算法:
switch多分支语句
switch:计算表达式的值,如果与case后的常量值相同则执行该case语句后的若干个语句直到遇到break语句为止,此时,如果该case语句中没有break语句,将继续执行后面case中的语句,直到遇到break,如果没有一个常量的值与表达式的值相同,则执行default后的语句,default语句是可选的,如果不存在,且switch中的表达式的值不与任何case的常量值相同,switch将不做任何处理
语法如下:
switch(){
case 常量值1:
语句块1
break;
...
case 常量值n:
语句块n
break;
default:
语句块n+1;
break;
}
例4.4:
import java.util.Scanner;
public class liti4_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);//打开键盘扫描器接收输入的数据
System.out.print("请输入成绩:"); //输出
int grade = sc.nextInt(); //将输入的数据存如int型变量grade里
switch(grade) { //计算表达式
case 10: //常量值为10
case 9:
System.out.print("成绩为优");//如果常量值为10,9则输出该行代码
break; //如果case开始执行,遇到break则停止
case 8:
System.out.print("成绩为良");
break;
case 7:
case 6:
System.out.print("成绩为中");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
System.out.print("成绩为差");
break;
default: //如果以上case常量值均与表达式的值不同,则执行default后的代码
System.out.print("成绩无效");
}
sc.close(); //关闭扫描器
}
}
代码运行结果:
流程图表示算法:
循环语句
while循环语句
while:也叫条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句
语法如下:
while(条件表达式){
语句序列
}
例4.5:
public class liti4_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 1; //定义一个int型变量x赋值1
int sum = 0; //定义一个int型变量sum赋值0
while(x <= 1000) { //判断x是否小于或等于1000
sum = sum + x; //sum表达式
x ++; //x自增
}
System.out.print("sum = "+ sum);//输出
}
}
代码运行结果:
流程图表示算法:
do...while循环语句
do...while:与while循环语句类似,区别是while先判断条件是否成立再执行循环,而do...while循环语句则先执行一次循环后,在判断条件是否成立,do...while循环语句至少会循环一次。
语法如下:
do{
语句序列
}while(条件表达式);
例4.6:
import java.util.Scanner;
public class liti4_6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in); //打开键盘扫描器接收输入的数据
int password; //定义一个int型变量passdword
do { //先执行一遍
System.out.print("请输入6位数字密码:");
password = sc.nextInt(); //将输入的数据存如int型变量passdword里
}while(931567 != password); //判断条件是否成立
System.out.print("登录成功");
sc.close();
}
}
代码运行结果:
流程图表示算法:
for循环语句
for:for循环可以用来重复执行某条语句,直到某个条件得到满足,for循环有两种语句,一种是传统的for语句,一种是foreach语句
传统for语法如下:
for(表达式1;表达式2;表达式3){
语句序列
}
例4.7:
public class liti4_7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0; //定义一个int型变量sum赋值0,用来存储2到100直接的偶数的和
for(int i = 2;i <= 100;i += 2) { //定义一个int型变量i赋值2,接着判断i是否小于等于100,i=i+1
sum = sum + i; //和的表达式
}
System.out.print("2到100之间的偶数之和为:"+ sum);//输出
}
}
代码运行结果:
流程图表示算法:
foreach语句
foreach:它是for语句的特殊简化版本,不能完全取代for语句,但任何foreach都可以改写为for语句版本,它不是一个关键字
语法如下:
for(元素类型x;遍历对象obj){
引用了x的java语句;
}
例4.8:
public class liti4_8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = {5,13,96}; //一维整型数组
System.out.println("一维数组中的元素分别为:");
//x的类型与arr元素的类型相同。for循环依次去除arr中的值并赋值给x
for (int x: arr) {
System.out.println(x);//输出遍历中的元素值
}
}
}
代码运行结果:
流程图表示算法:
break语句
break:break可以跳出当前循环,就近原则,哪个循环离它近它跳出哪个循环,不能越级跳出。
语法如下:
while(...){
...
break;
...
}
/
do{
...
break;
...
}while(...);
/
for{
...
break;
...
}
例4.9:
public class liti4_9 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 1;i < 20;i ++) {
if(i%2 == 0) { //如果i是偶数
System.out.println(i);//输出i的值
break; //结束循环
}
}
System.out.println("---end---");//结束时输出一行文字
}
}
代码运行结果:
流程图表示算法:
例4.10使用标签让break结束外层循环
public class liti4_10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 1;i <=3;i ++) { //外层循环
for(int j = 1;j <= 5;j ++) { //内层循环
if(j == 4) { //内层循环至第四次时就结束
break;
}
System.out.println("i="+ i +" j="+ j); //输出i和j的值
}
}
}
}
代码运行结果:
流程图表示算法:
continue语句
continue:是针对break语句的补充,作用并不是立即跳出当前循环而是跳过本次循环,回到循环的条件判断环节,重新开始判断
语法如下:
while(...){
...
continue;
...
}
///
do{
...
continue;
...
}while(...);
///
for{
...
continue;
...
}
例4.11:
public class liti4_11 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 1;i <= 20;i ++) {
if(i %2 == 0) { //如果i是偶数
continue; //跳到下一循环
}
System.out.println(i);//输出i的值
}
}
}
代码运行结果:
流程图表示算法:
总结到此结束,本章学习了流程控制,包括了复合语句,条件语句,循环语句,循环控制。
到此已经学习了四个章节了,鼓励自己一直坚持学习下去!