4.1复合语句
Java语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“{”开始,闭括号"}"结束。
4.2条件语句
4.2.1if条件语句
if条件语句是一个重要的编程语句用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下执行另外的语句。
1.简单的if条件语句
语法如下:
if(布尔表达式){
语句序列
}
布尔表达式:必要参数,表示最后返回的结果必须是一个布尔值。它可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。
语句序列:可选参数。可以是一条或多条语句,当表达式的值为true时执行这些语句。若语句序列中仅有一条语句,则可以省略条件语句中的“{}”。
例题4.1 判断手机号码是否存在
代码:
public class TakePhone {
public static void main(String[]args) {
int phoneNumber=123456789; //创建变量,保存电话号码
if(phoneNumber!=84972266) { //如果次号码不是849722666
System.out.println("对不起,您拨打的号码不存在!");//提示号码不存在
}
}
}
运行结果如下:
流程图
2.if...else语句
if...else语句是条件语句中最常用的一种形式,它会针对某种条件有选择地做出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。语法如下:
if(条件表达式)
语句序列1
}else{
语句序列2
}
if后面“()”内的表达式的值必须是boolean型的。如果表达式的值为true,则执行紧跟if语句的复合语句;如果表达式的值为false,则执行else后面的复合语句。同简单的if条件语句一样,如果if……else语句的语句序列中只有一条语句(不包括注释),则可以省略该语句序列外面的“{}”。有时为了编程的需要,else或if后面的“{}”中可以没有语句。
例题4.2使用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("密码错误,拒绝登录");//密码错误的提示
}
}
}
运行结果如下:
流程图:
3.if...else if多分支语句
if……else if多分支语句用于针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理”。语法如下:
if(条件表达式1){
语句序列1
}else if(条件表达式2){
语句序列2
}
……
else if(条件表达式n){
语句序列n
}
条件表达式1~条件表达式n:必要参数。可以由多个表达式组成,但最后返回的结果一定要为boolean类型。
语句序列:可以是一条或多条语句,当条件表达式1的值为true时,执行语句序列1;当条件表达式2的值为true时,执行语句序列2,以此类推。当省略任意一组语句序列时,可以保留其外面的“{}”,也可以将“{}”替换为“;”。
例题4.3使用if..else if语句实现饭店作为分配
代码:
public class Reataurant {
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("抱歉,我们店暂时没有这么大的包厢!"); //输出信息
}
}
}
运行结果如下:
流程图:
4.2.2switch多分支语句
在编程中,一个常见的问题就是检测一个变量是否符合某个条件,如果不符合,再用另一个值来检测,以此类推。在Java中,可以用Switch语句将动作组织起来,以一个较简单明了的方式来实现“多选一”的选择。语法如下:
switch(表达式){
case 常量值1:
语句块1
【break】
……
case 常量值n:
语句块n
【break】
default:
语句块n+1
【break】
}
switch语句中表达式的值必须是整型、字符型、字符串类型或枚举类型,常量值1~n的数据类型必须与表达式的值的类型相同。
switch语句首先计算表达式的值,如果表达式的计算结果和某个case后面的常量值相同,则执行该case语句后的若干个语句直到遇到break语句为止。
同一个 switch语句,case的常量值必须互不相同。在 switch语句中,case语句后常量表达式的值可以为整数,但绝不可以是非整数的实数。
例4.4使用 switch语句为考试分数分级
代码:
import java.util.Scanner;
public class Gradeon {
public static void main(String[]args) {
Scanner sc=new Scanner(System.in); //创建扫描器,获取控制台输入的值
System.out.println("请输入成绩:"); //输出字符串
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(); //关闭扫描器
}
}
运行结果如下:
流程图:
4.3循环语句
4.3.1 while循环语句
while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句。语法如下:
while(条件表达式){
语句序列
}
例4.5 计算1~1000的相加结果
代码:
public class GetSum {
public static void main(String[] args) {
int x =1; //从1开始
int sum=0; //相加的结果
while(x<=1000) { //循环1000
sum =sum+x; //sum与之前计算的和相加
x++; //每次循环后x的值+1
}
System.out.println("sum="+sum); //输出最终的相加结果
}
}
运行结果如下:
流程图:
4.3.2 do……while循环语句
do……while循环语句与while循环语句类似,它们之间的区别是while语句为先判断条件是否成立,再执行循环体,而do……while循环语句则先执行一次循环后,再判断条件成立。也就是说,do……while循环语句“{}”中的程序段至少要被执行一次。语法如下:
do{
语句序列
}while(条件表达式)
例4.6 使用do……while语句进行用户登录验证
代码:
import java.util.Scanner; //引入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(); //关闭扫描器
}
}
运行结果为;
流程图:
例4.7 使用for循环计算2~100所有偶数之和
代码:
public class Circulate {
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); //将相加后的结果输出
}
}
运行结果如下:
流程图:
例题4.8 使用 foreach语句遍历整型数组
代码:
public class Repetition {
public static void main(String[] args) {
int arr[]= {5,13,96}; //一维整型数组
System.out.println("一维数组中的元素分别为:");
//x的类型与arr元素的类型相同。for循环依次取出arr中的值并赋给x
for(int x:arr) {
System.out.println(x); //输出遍历出的元素值
}
}
}
运行结果如下:
流程图:
例4.9 输出1~20出现的第一个偶数
代码:
public class BreakTest {
public static void main(String[] args) {
for(int i = 1;i<20;i++) { //定义i
if(i%2==0) { //如果i是偶数
System.out.println(i);//输出i的值
break; //结束循环
}
}
System.out.println("---end---"); //结束时输出一行文字
}
}
运行结果如下:
流程图:
例4.10 使用标签让break结束外层循环
代码:
public class BreakInsideNested {
public static void main(String[] args) {
for(int i = 1;i <=3;i ++) { //外层循环
for(int j = 1;j <= 5;j ++) { //内层循环
if(j == 4) { //内层循环至第4次时就结束
break;
}
System.out.println("i="+ i +" j="+ j);
}
}
}
}
运行结果如下:
流程图:
例4.11 输出1~20的奇数
代码:
public class Contiuen {
public static void main(String[] args) {
for(int i = 1;i <=20;i++) {
if(i%2==0) { //如果i是偶数
continue; //跳到下一循环
}
System.out.println(i);//输出i的值
}
}
}
运行结果如下:
流程图: