第3章 程序逻辑控制

程序是一场数据的计算游戏,而要想让这些数据处理更加具有逻辑性,那么就需要利用分支结构与循环结构来实现控制。本章为读者讲解if、else、switch、for、while、break、continue这些逻辑关键字的使用。

3.1 程序逻辑

程序逻辑是编程语言中的重要组成部分,Java的程序结构主要有三种:顺序结构、选择分支结构和循环结构。
        这三种不同的结构有一个共同点,就是他们都只有一个入口,也只有一个出口。

1 顺序结构

        本书前两章所讲的例子采用的都是顺序结构,程序自上而下逐行执行,一条语句执行完之后继续执行下一行语句,一直到程序的结尾,顺序结构在程序设计中是最长使用的结构,在程序中扮演了非常重要的角色,因为大部分的程序基本上都是按照这种自上而下的流程来设计。

2 选择结构

        选择结构是根据判断条件的成立与否再决定执行哪些语句的一种结构,这种结构可以依据判断条件的结构来决定要执行的语句。

3循环结构

循环结构是根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落就被称为循环主体。

3.2 分支结构

if分支结构主要是针对于逻辑运算的处理结果来判断是否执行某段代码,在Java中可以使用if与else两个关键字实现此类结构:
 

if判断if...else判断多条件判断

if(布尔表达式){

条件满足时执行;

}

if(布尔表达式){

条件满足时执行;

}else{

条件满足时执行;

}

if(布尔表达式){

条件满足时执行;

}else if(布尔表达式)

{

条件满足时执行;

}

else{

条件满足时执行;

}

范例:使用if语句结构
public class JavaDemo
{
public static void main(String args[])
{
int age=20;
if(age>=18&&age<=22)
{
Syetem.out.println("我是一个大学生");
}
System.out.println("开始为自己的梦想不断努力拼搏");
}
}

范例:使用if...else..语句结构

public class JavaDemo
{
public static void main(String args[])
{
double money=20.00;
if(money>=19.8)
{
System.out.println("111");
}else
{
System.out.println("222");
}
}
}

范例:多条件判断

public class JavaDemo
{
public static void main(String args[])
{
double score=90.00;
if(score>=90&&score<=100)
System.out.println("优等生");
else if(score>=60&&score<90)
System.out.println("良等生");
else
System.out.println("差等生");
}
}

3.2.2 switch 开关语句

switch是一个开关语句,它主要根据内容进行判断。需要注意的是,switch语句只能判断数据(int,char,枚举,String),而不能使用布尔表达式进行判断,swicth语法如下:
switch(整数|字符|枚举|String)
{
case 内容:
{
内容满足时执行;
[break;]
}

case 内容:
{
内容满足时执行;
[break;]
}
}

注意:if可以判断布尔表达式,而switch语句不能使用布尔表达式,它最早的时候只能够进行整数或者字符的判断,从JDK1.7支持了枚举判断,在JDK1.7的时候只吃了String的判断。
在每一个case里面出现的break语句,表示停止case的执行,因为switch语句默认情况下会从第一个满足的case语句开始执行语句代码,直到遇见了break语句。
范例:使用switch语句
public class JavaDemo
{
public static void main(String args[])
{
int ch=1;
switch(ch)
{
case 2:
System.out.println("222");
case 1:
System.out.println("111");

break;
decault:

System.out.println("default");
break;
}
}
}
本程序由于在case语句里面定义了break语句,所以执行时将不会执行其他case语句内容,注意从JDK1.7开始,switch语句支持了对String类型内容的判断。

范例:使用switch判断字符串类型
public class JavaDemo
{
public static void main(String args[])
{
String str="mldn";
switch(str)
{
case "mldn":
System.out.println("mldn");
break;

case "MLDN":
System.out.println("MLDN");
break;

decault:

System.out.println("default");
break;
}
}
}

3.3 循环结构

循环结构的主要特点是可以根据某些判断条件来重复执行某段代码的处理结构,Java语言的循环结构一共分为两种类型,while循环结构和for勋魂结构。

3.3.1 while循环结构

while循环是一种较为常见的循环结构,利用while语句可以实现循环条件的判断,当判断条件满足是执行循环体的内容,Java中while循环结构有以下两类
 

while循环do...while循环

while(循环判断)
{

循环语句;

循环借宿条件;

}

do{

循环语句;

修改循环结束条件;

}while(循环判断):

通过两类语法结构可以发现,while循环需要先判断循环条件后才可以执行程序代码,do...while循环可以先执行一次循环体,而后进行后续循环的判断。所以如果循环条件都不满足的情况下,do...while至少执行一次。

注意:避免死循环

范例:使用while循环实现1-100数字的累加和
public static JavaDemo
{
public static void main(String args[])
{
int sum=0;
int num=100;
while(num>0)
{
sum+=num;
num--;
}
}
}

范例:使用do...while实现1-100数字累加
public class JavaDemo
{
public static void main(String args[])
{
int sum=0;
int num=0;
do
{
sum+=num;
num+=1;
}while(num<=100);
}
}

3.3.2 for循环结构

范例:使用for循环实现1-100累加
public class JavaDemo
{
public static void main(String args[])
{
int sum=0;
for(int num=1;num<=100;num++)
{
sum+=num;
}
}
}

注意:for循环编写时尽量不要按照以下方式进行编写
对于循环的初始值和循环条件的变更,在正常情况下可以有for语句自动进行控制,但是根据不同的需要可以将其分开定义:
public class JavaDemo
{
public static void main(String args[])
{
int sum=0;
for(;num<=100;)
{
sum+=num;
}
}
}
这两种方式所实现的效果完全一致,但是除非有特殊的需求,不推荐该种写法。

3.3.3 循环控制语句

在循环结构中只要循环条件满足,循环体就会一直执行,但是在程序之中也提供有两个循环停止的控制语句:continue(退出本次循环),break(退出整个循环)。循环控制语句在使用时往往要结合分支语句进行判断。

范例:使用continue循环控制:
public class JavaDemo
{
public static void main(String args[])
{
for(int x=0;x<10;x++)
{
if(x==3)
continue;
System.out.println(x+"、");
}
}
}

此时程序中使用了continue语句,而结果中可以发现缺少了3的内容,这是因为使用了continue语句,当x=3时结束当前循环,而直接进行下一次循环的操作

范例:使用break控制循环
public class JavaDemo
{
public static void main(String args[])
{
for(int x=0;x<10;x++)
{
if(x==3)
{
break;
}
System.out.println(x+"、")
}
}
}

3.3.4 循环嵌套

循环结构可以在内部嵌入若干子的循环结构,这样可以实现更为复杂的循环控制结构,但是需要注意的是,这类循环有可能会导致程序复杂度提高
打印乘法口诀表
public class JavaDemo
{
public static void main(String args[])
{
for(int row=1;row<=9;row++)
{
for (int column=1;column<=row;column++)
{
System.out.prrint(row+"*"+column"="+row*column);
}
System.out.println();
}
}
}

范例:打印三角形

public class JavaDemo
{
public static void main(String args[])
{
int line=5;
for(int x=0;x<line;x++)
{
System.out.println(" ");
}
for(int y=0;y<=x;y++)
{
System.out.println("* ");
}
System.out.println();
}
}
提示:关于continue与循环嵌套的使用问题

范例:使用continue进行跳出处理

public class JavaDemo
{
public static void main(String args[])
{
point:for(int x=0;x<3;x++)
{

for(int y=0;y<3;y++)

{
if(x==y)
{
continue point;
}
System.out.println(x+"、");
}

System.out.println();
}
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值