一、复合语句
与C语言及其他语言相同,Java语言的复合是以整个块区为单位的语句,所以又称块语句。复合语句有开括号“{”开始,闭括号“}”结束。
在使用时要注意,复合语句为局部变量创建一个作用域,该作用域为程序的一部分,在该作用中某个变量被创建并能够使用。如果在某个变量的作用的作用域外使用该变量,则会发生错误。
二、if条件语句
if语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行另一条语句。if条件语句可分为简单的if条件语句,if…else if多分支语句
1.1简单的if条件语句
语法如下:
if(布尔类型表达式){
语句序列
}
布尔表达式:必要参数,表示最后返回的结果是一个布尔值。他可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。
语句序列:可选参数。可以是一条或多条语句,当表达式的值为true是执行这些语句。若语句列中仅有一条语句,则可以省略条件语句中的“{ }”。
如果语句序列中只有一条语句,可以采用一下写法:
int a = 100;
if(a== 100)
System.out.print("a的值是100");
提示:
虽然if条条件语句中的语句序列只有一条语句时,省略“{ }”并无语法错误,但为了增强程序的可读性,最好不要省略。
条件语句后的语句序列省略时,可以保留外面的大括号。也可以省略大括号,最后在末尾加“;”。
如下两种情况都是正确的:
boolean b = false;
if(b);
boolean b= false;
if(b){ }
简单的if条件语句执行的过程如图所示:
创建Takephone类,模拟拨打电话场景,如果电话号码不是84972266,则提示拨打号码不存在。
public class Takephone{
public static void main(String[]arges){
int phoneNumber = 123456789;//创建变量,保存电话号码
if(phoneNumber !=84972266{//如果此电话号码不是84972266
System.out.println("对不起,您拨打的号码不存在!");//提示号码不存在
}
}
}
运行结果如下:
流程图:
二、if…else语句
if…else语句是条件语句中最常用的一种形式,他会针对某种条件有选择做出处理,通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。语法如下:
if(条件表达式){
语句序列1
}else{
语句序列2
}
if后面“()”内表达式的值必须是boolean型的。如果表达式的值为ture,则执行紧跟if语句的复合语句;如果表达式的值为false,则执行else后面的复合语句。
使用if…else语句校验密码,在项目中创建Login类,在主方法中定义变量,并通过使用if…else语句判断变脸的值来决定输出结果。
public class Login {
public static void main(String[] args) {
int password = 987654321;{//密码值
if (123456789 == password) {//如果密码是123456789
System.out.println("密码正确,欢迎登录");//密码正确的提示
}else {//否则
System.out.println("密码错误,拒绝登录");//密码错误提示
}
}
}
}
运行结果如下:
流程图如下:
三、if…else if多分支语句
if…else if多分支语句针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理”。语法如下:
if(条件表达式){
语句序列1
else if(条件表达式2){
}
……
else if(条件表达式n){
}
条件表达式1~条件表达式n:必要参数。可以由多个表达式组成,但最后返回的结果一定要为boolean类型
语句序列:可以是一条或多条语句,当条件表达式为true时,执行语句序列1:;当条件表达式的值为ture时,执行语句序列2,以此类推。当省略任意一组语句序列时,可以保留其外面的的“{ }”也可以将“{ }”替换为“;”
使用if …else语句实现座位分配,创建Restaurant类,声明整型变量count 表示用餐人数,根据用餐人数安排客人到4人桌、8人桌或者包厢用餐,代码如下。
public class Restaurant {
public static void main(String[] args) {
System.out.println("欢迎光临,请问有多少人用餐?");//输出问题提示
int count = 9;//用餐人数
System.out.println("回答:"+count+"人");//输出回答
if(count <= 4) {//如果小于4个人
System.out.println("客人请到大厅4人桌用餐");//请到4人桌
}else if (count > 4 && count <=8) {//如果人数4~8人
System.out.println("客人到大厅8人桌用餐");//请到8人桌
}else if (count > 8 && count <=16) {//如果人数8~16人
System.out.println("客人请到楼上包厢用餐");//请到包厢
}else {
System.out.println("抱歉,我们店暂时没有这么大的包厢!");//当以上条件不成立时,执行该语句
}
}
}
运行结果如下:
流程图:
四、Switch 多分支语句
在编程中,一个常见的检测是一个变量是否复合某个条件,如果不符号再用另一个值来检测,以此类推。当然,这种问题使用if条件语句也可以完成。以下是Switch语句的基本语法结构:
Switch (变量或表达式){
case 取值 1:
//对应取值1的代码
break;
//对应取值2的代码
break;
//…
default:
//对应其他取值的代码
break;
}
注意事项:
Switch语句只能用于判断某个变量或表达式的取值,不能判断某个条件是否成立。
case分支的取值必须是常量表达式,不能是变量或其他非常量表达式。
在case分支中可执行多条语句,但是必须以break语句介绍。如果没有break语句,则会继续执行后面的case分支,直到遇到break语句或switch语句结束。
default分支可以省略,如果省略了则不会执行任何代码。
例题,使用switch语句为考试分数分级,创建Scanner类,代码如下。
import java.util.Scanner;//引入Scanner类
public class Grade {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//创建扫描器,接收控制台输入的内容
System.out.print("请输入成绩:");//输出字符串
int grade = sc.nextInt();//获取控制台输入的数字
switch (grade) {//使用switch判断数字
case 10://如果等于10,则继续执行下一行代码
case 9://如果等于9
System.out.println("成绩为优");//输出“成绩为优”
break;//结束判断
case 8://如果等于8
System.out.println("成绩为良");//输出“成绩为良”
break;//结束判断
case 7://如果等于7
case 6://如果等于6
System.out.println("成绩为中");//输出“成绩为中”
break;//结束判断
case 5://如果等于5,则继续执行下一行代码
case 4://如果等于4,则继续执行下一行代码
case 3://如果等于3,则继续执行下一行代码
case 2://如果等于2,则继续执行下一行代码
case 1://如果等于1,则继续执行下一行代码
case 0://如果等于0,则继续执行下一行代码
System.out.println("成绩为差");//输出“成绩为差”
break;//结束判断
default://如果不符合以上任何一个结果
System.out.println("成绩无效");//输出成绩无效
}
sc.close();
}
}
运行结果如下:
流程图:
二、循环语句
一、While 循环语句
while循环语句也称判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句。语法如下:
while(条件表达式){
语句序列
}
当条件表达式的返回值为真时,则执行“{ }”中的语句,当执行完“{ }”中的语句后,重新判断条件表达式的返回值,直到表达式为假时,退出循环。
例题:创建GetSun类,在主方法中通过while循环计算1~1000相加的和并输出。
代码如下:
public class GetSun {
public static void main(String[] args) {
int x= 1;//从1开始
int sun= 0;//相加的结果
while (x <= 1000) {//循环1000次
sun =sun + x;
x++;
}
System.out.println("sun ="+sun);
}
}
运行结果如下:
流程图:
一、do…while循环语句
do…while循环语句与while循环语句相似,也是用来重复执行一段代码,但是它有个特点,就是无论循环条件是否为真,do…while循环至少会执行一次。
do…while循环语句的语法如下:
do{
//循环体
} while(循环条件);
使用
do…while循环的注意点有:
循环体至少会执行一次,所以要确保循环条件的代码可以正确的执行一次
循环条件在循环体后面,所以要注意条件的赋值和修改,避免进入死循环。
do…while循环的区别在于循环条件的判断顺序,do…while循环先执行一次循环体,再判断循环条件是否为真,而while循环则是先判断循环条件是否为真,再执行循环体,因此在实际使用时要根据具体情况选择的合适的循环语句。
创建LoginService类,代码如下:
import java.util.Scanner;
public class LoginService {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);//创建扫描器,获取控制台输入的值
int password;//保存用户输入的密码
do {
System.out.println("请输入6位数字密码:");//输出提示
password = sc.nextInt();//将用户输入的密码记录下来
}while(931567 != password);//当用户输入的密码不是931567则继续执行循环
System.out.println("登录成功");//提示循环结束
sc.close();//关闭扫描器
}
}
运行结果如下:
流程图:
二、for循环语句
Java中的for循环是一种常用的循环结构,可以方便实现对一定次数的重复执行操作。for循换语法如下:
for(表达式1;表达式2;表达式3){
语句序列;
}
其中,初始化语句在循环开始前执行一次,循环条件在每次循环开始前进行判断,如果为ture,则执行循环体语句,执行完循环体语句后执行循环后操作,然后再次进行循环条件的判断,如此往复直到循环条件不成立时结束循环。
for循环常用于遍历数组或集合等集合类数据结构。同时,Java中的for循环条件也支持多个循环变量和增量表达式的自定义设置,可以实现更加灵活的循环操作。
需要注意的是,在for循环中,如果循环条件一开始就不满足,循环体语句不会被执行;同时,在循环条体中可以满足使用break语句和continue语句控制循环的执行流程。
使用for循环计算2~100所有偶数只和,代码如下:
public class Circculate {
public static void main(String[] args) {
int sum = 0;//偶数相加的结果
for(int i = 2;i<= 100;i+=2) {
sum = sum + i;//指定循环条件及循环体
}
System.out.println("2到100之间的所有偶数只和为:"+sum);//将相加后的结果输出
}
}
运行结果如下:
流程图:
三、循环控制
break语句
在Java中,break语句可以用于循环或者Switch语句中,用于提前结束或者跳出包含该语句的循环或者Switch语句中,用于提前结束循环或者跳出Switch语句的执行。当程序执行到break语句时,会直接跳出包含该语句的循环或Switch语句,并且继续执行后面的代码。
同样break也可以跳出循环体。在循环中,一旦执行到break语句,循环将会被立即终止,程序会跳出循环并执行循环后的代码。
创建BreakTest类,代码如下:
public class BreakTest {
public static void main(String[] args) {
for(int i =1;i<20;i++) {
if(i%2==0) {
System.out.println("i");
break;
}
}
System.out.println("---end---");
}
}
运行结果如下:
流程图如下:
循环嵌套情况下,break 语句将只会使程序流程跳出包含它的最内层的循环结构,即只跳出一层循环。
Continue 语句
continue语句是针对break语句补充的补充,continue语句不是立即跳出循环体,二是跳过本次循环,回到循环的条件测试部分,重新开始执行循环。在for循环语句中遇到continue后,首先执行循环的增量部分,然后进行条件测试,在while和do…while循环中,continue语句使控制回到条件测试部分。
创建一个ContinueTest类,代码如下:
public class ContinueTest {
public static void main(String[] args) {
for(int i = 1;i<=20;i++) {
if(i %2 ==0) {//如果i是偶数
continue;//跳到下一循环
}
System.out.println(i);//输出i的值
}
}
}
运行结果如下:
流程图: