if选择结构
语法: if(条件){
代码块 //条件成立后要执行的代码,可以是一条语句,也可以是一组语句
}
程序执行时,先判断条件。当结果为true时,程序先执行大括号里的代码块,在执行if结构(即{}部分)后面的代码。当结果为false时,不执行大括号里的代码块,而执行if结构后面的代码。
经验:当if关键字后的一对大括号里只有一个语句时,可以省略大括号。但是为了避免有多个语句时遗忘大括号,以及保持程序整体风格一致,建议不要省略if结构的大括号。
在if结构中会经常用到逻辑运算符,常用的逻辑运输符有3个:
(&&与,并且)》表达式(条件1&&条件2):两个条件同时为真,则结果为真;两个条件有一个为假,则结果为假。
(||或,或者)》表达式(条件1||条件2):两个条件有一个为真,则结果为真;两个条件同时为假则结果为假。
(!非)》表达式(!条件):条件为真时,结果为假,条件为假时,结果为真。
经验:当运算符比较多时,无法确定运算符执行的顺序时,可以使用小括号控制。
if——else选择结构
语法:if(条件){
//代码块1
}else{
//代码块2
}
此时的结构有两块,比较基本的if结构多了else块结构。
扩展:产生随机数(0~9中任意整数)的方法如下:
int random = (int)(Math.random()*10);//产生随机数
多重if选择结构
语法:if(条件1){
//代码块1
}else if(条件2){
//代码块2
}else{
//代码块3
}
注意!else块最多有一个或没有,else块必须要放在else if块之后。
注意!如果多重if选择结构中的所有条件之间只是简单的互斥,不存在连续的关系,则条件没有顺序要求。 例如,判断一个人的国籍 是中国,美国,英国,法国,俄国或其他。如果是数值则需要注意顺序和条件写法。
嵌套if选择结构
语法:
if(条件1){
if(条件2){
//代码块1
}else{
//代码块2
}
}else{
//代码块3
}
注意!只有当满足外层if选择结构的条件时,才会判断内层if的条件。else总是与它前面最近的那个缺少else的if配对。
注意!为了使if结构更加清晰,应该把每个if或else包含的代码块用大括号括起来。相匹配的一对if和else应该左对齐。内层的if结构相对于外层的if结构要有一定的缩进。
当面对一个问题无从下手时,画出流程图来理清思路解决一些比较难的问题可能会更简单直观
switch选择结构
语法:switch(表达式){
case 常量 1:
//代码块1;
break;
case 常量 2:
//代码块2;
break;
…
default:
//代码块n;
break;
}
switch结构中四个关键字解释:
这里是switch,case,default,break,都是Java的关键字。
》switch:表示:“开关”,这个开关就是switch关键字后面小括号里表达式的值,JDK1.7后,switch语句小括号里可以是int ,short,byte ,char,枚举类型 ,String类型表达式。
》case:表示“情况,情形”,case后可以是int,short,byte ,char,枚举,String类型,通常是一个固定的值。case块可以有多个,顺序可以改变,但是每个case后常量的值必须各不相同。
》default:表示默认,即其他情况都不满足。default后要紧跟冒号。default块和case块的先后顺序可以变动,不会影响程序执行的结果。通常,default块放在末尾,也可以省略。
》 break:表示“停止”,即跳出当前结构。
switch选择结构的执行具体过程:
先计算并获得switch后面小括号里的表达式或变量的值,然后将计算结果顺序与每个case后的常量比较,当二者相等时,执行这个case块中的代码;当遇到break时,就跳出switch选择结构。执行switch选择结构之后的代码。如果没有任何一个case后的常量与switch后的小括号中的值相等,则执行switch末尾部分的default块中的代码。
注意!
虽然break语句是可以省略的,,但是省略后会带来一些问题。省略之后的后果为,当某个case后的常量值与switch后小括号中的值相匹配时,执行该case块的代码,后面的case就不再进行条件判断,而直接执行后面所有case块中的代码,直到遇到break结束。所以在编写switch选择结构时不要忘记在每个case块后加上一个“break;”,用来跳出switch选择结构。
每个case后的代码块可以有多个语句,即可以有一组语句。而且不需要用“{ }”括起来。case和default后都有一个冒号,不能漏写,否则编译不能通过。对于每个case的结尾都要想一想是否需要跳出整个switch选择结构。如果需要,一定不要忘记写“break;”。
小结
swith选择结构的条件只能是等值的判断,而且只能是整形或字符型的等值判断。也就是说,switch选择结构只能用于判断一个整型变量或表达式是否等于某个整数值的情况,或者一个字符型变量或表达式是否等于某个字符的情况,并且每一个case后面的常量值都不同。多重if选择结构和switch选择结构很相似,它们都是用来处理多分支条件的结构,但是switch选择结构只能用于等值条件判断的情况。
选择结构总结
Java中的if选择结构,包括以下形式。
基本的if选择结构:可以处理单一或组合条件的情况。
语法:
if(条件){
//代码块
}
if-else选择结构:可以处理简单的条件分支情况。这种形式结构简单,但在实际开发中使用非常频繁。
语法:
if(条件1){
//代码块1
}else{
//代码块2
}
多重if选择结构:可以处理复杂的条件分支情况。多重if选择结构在解决需要判断的条件是连续的区间时有很大的优势。
语法:
if(条件1){
//代码块1
}else if(条件2){
//代码块2
}else{
//代码块3
}
其中,else if块可以有多个,也可以没有,需要几个else if完全取决于实际需求。else块最多有一个或者没有,else块必须要放在else if块之后。
嵌套if选择结构:在if选择结构中又包含一个或多个if选择结构的情况,这种结构一般用于较为复杂的流程控制中。if选择结构嵌套的形式很多,以下形式为基本的结构。
语法:
if(条件1){
if(条件2){
//代码块1
}else{
//代码块2
}
}else{
if(条件3){
//代码块3
}else{
//代码块4
}
}
Java中的switch选择结构。
当需要多重分支并且条件判断是等值判断的情况下,使用switch选择结构代替多重if选择结构会更简单,代码结构更清晰易读。
处理系统异常
》通过调用Scanner对象的hasNextInt()方法,来判断用户从键盘上输入的字符是否合法,如果用户提示输入的是数值,则根据输入的具体数值跳转到相应的菜单,如果用户输入的不是数字,则给出好友提示“请输入正确的数字!”.
通过判断,并给出用户提示,增加了程序的健壮性,是程序能够较好地处理发生的异常,在后面的学习中将介绍更多处理程序异常的方法。
本章总结
》当需要多重分支并且条件判断是等值判断的情况下,使用switch选择结构代替多重if选择结构会更简单,代码更清晰易读。在使用switch选择结构时不要忘记在每个case的最后上写上break语句。
》为了增加程序的健壮性,可以在程序中主动做出判断,并给用户友好的提示。
》在实际开发中,遇到分支情况时,通常会综合运用if选择结构的各种形式及switch选择结构来解决。