分支和循环语句
一、分支语句
1. 流程控制
流程控制语句的分类
(1)循环结构
程序中最简单最基本的流程控制,按照代码的先后顺序,依次执行。
public class day_004 {
public static void main(String[] args){
System.out.println("顺");
System.out.println("序");
System.out.println("结");
System.out.println("构");
}
}
2. if语句
格式1:
if(关系表达式){
语句体;
}
执行流程:
①首先计算关系表达式的值;
②如果关系表达式的值为true,则执行语句体,反之为false则不执行;
③继续执行后面的语句。
public class day_004 {
public static void main(String[] args) {
int i = 20;
int j = 10;
//如果i > j成立,则将j的值赋给i
if (i > j) {
i = j;
}
System.out.println("i = " + i);
}
}
格式2:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
①首先计算关系表达式的值;
②如果关系表达式的值为true,则执行语句体1,反之为false则执行语句体2;
③继续执行后面的语句。
public class day_004 {
public static void main(String[] args) {
int i = 21;
//判断i的奇偶性
if (i % 2 == 0) {
System.out.println(i+"是偶数");
}else{
System.out.println(i+"是奇数");
}
}
}
格式3:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
……
else{
语句体n+1;
}
执行流程:
①首先计算关系表达式1的值;
②如果关系表达式1的值为true,则执行语句体1,如果为false就计算关系表达式2的值,关系表达式2的值为真执行语句体2,反之执行关系表达式3,……;
③如果没有任何关系表达式的值为真,则执行语句体n+1。
import java.util.Scanner;
public class day_004 {
public static void main(String[] args) {
//int grade = 97;
//从键盘输入分数
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩(0-100):");
int grade = sc.nextInt();
//判断成绩在哪个等级,90-100为A,80-89为B,70-79为C,60-69为D,59及以下为E
if (grade < 0 || grade > 100) {
System.out.println("您输入的分数有误,请重新输入!");
} else if (grade >= 90 && grade <= 100) {
System.out.println("成绩" + grade + "分,等级为A");
} else if (grade >= 80 && grade < 90) {
System.out.println("成绩" + grade + "分,等级为B");
} else if (grade >= 70 && grade < 80) {
System.out.println("成绩" + grade + "分,等级为C");
} else if (grade >= 60 && grade < 70) {
System.out.println("成绩" + grade + "分,等级为D");
} else {
System.out.println("成绩" + grade + "分,等级为E");
}
}
}
3.switch语句
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
……
default:
语句体n+1;
[break;]
}
执行流程:
①首先计算表达式的值;
②用表达式的值和case后面的值依次进行比较,如果有对应的值,就会执行相应的语句,在执行过程中,遇到break则结束switch循环;
③若所有的case值都和表达式的值不匹配,则执行default里面的语句体,然后结束程序。
import java.util.Scanner;
public class day_004 {
public static void main(String[] args) {
//从键盘输入月份,判断是什么季节
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份(0-12):");
int month = sc.nextInt();
switch (month) {
case 12:
case 1:
case 2:
System.out.println("冬天");
break;
case 3:
case 4:
case 5:
System.out.println("春天");
break;
case 6:
case 7:
case 8:
System.out.println("夏天");
break;
case 9:
case 10:
case 11:
System.out.println("秋天");
break;
default:
System.out.println("您输入的月份有误,请重新输入!");
}
}
}
二、循环语句
循环结构的特点:有开始和结束标志,重复同一件事。
循环结构的组成:
①初始化语句:表示循环开始的状态;可以是一条或多条内容,完成一系列初始化操作。
②条件判断语句:循环执行的条件;使用一个结果值为boolean类型的表达式,此表达式决定是否执行循环体,例如:i>3 。
③循环体语句:循环所执行的内容;任意语句。
④条件控制语句:表示循环执行中每次变化的内容;通常使用一条语句来改变变量的值,从而达到控制循环是否能继续向下执行的效果,如:i++。
1. for循环语句
格式:
for(初始化语句; 条件判断语句; 条件控制语句){
循环体语句;
}
执行流程:
①执行初始化语句;
②执行条件判断语句,结果为true,则执行循环体语句,反之结束循环;
③执行条件控制语句;
④回到②继续。
public class day_004 {
public static void main(String[] args) {
//计算1+2+3+…+98+99+100的值
int sum = 0;
for (int i = 0; i < 101; i++) {
sum += i;
}
System.out.println("从1加到100的值为:" + sum);
}
}
2. while循环语句
格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
执行流程:
①执行初始化语句;
②执行条件判断语句,结果为true,则执行循环体语句,反之结束循环;
③执行条件控制语句;
④回到②继续。
//用while实现
public class day_004 {
public static void main(String[] args) {
//计算1+2+3+…+98+99+100的值
int sum=0;
int i = 0;
while (i <= 100) {
sum += i;
i++;
}
System.out.println("从1加到100的值为:" + sum);
}
}
3. do…while循环语句
格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:
①执行初始化语句;
②执行循环体语句
③执行条件控制语句;
④执行条件判断语句,结果为true,则执行继续,反之结束循环;
⑤回到②继续。
//用do…while实现
public class day_004 {
public static void main(String[] args) {
//计算1+2+3+…+98+99+100的值
int sum=0;
int i = 0;
do {
sum +=i;
i++;
} while (i <= 100);
System.out.println("从1加到100的值为:" + sum);
}
}
三种循环的区别
(1)for循环和while循环先判断条件是否成立,再决定是否执行循环体;
(2)do…while循环先执行循环体,再判断条件是否成立,是否继续执行循环体。
(3)for和while的区别:
①for循环中,条件控制语句所控制的自增变量,在for循环结束后不再被访问;
②while循环中,条件控制语句所控制的自增变量,在while循环结束后,还可以继续使用。
死循环格式
for( ; ;){ }
while(true){ }
do{ } while(true);
4. 控制跳转语句
跳转控制语句
continue
:用在循环中,基于条件控制,跳过某次循环体的执行,继续下一次循环;
break
:用在循环中,基于条件控制,终止当前的整个循环。
5. 循环嵌套
循环语句中包含循环语句称为循环嵌套。
public class day_004 {
public static void main(String[] args) {
//打印输出九九乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (i * j) + '\t');
}
System.out.println();
}
}
}
6. Random
作业:产生一个随机数
使用步骤:
①导包
import java.util.Random;
②创建对象
Random r = new Random();
③获取随机数
int number =r.nextInt();
import java.util.Random;
public class day_004 {
public static void main(String[] args) {
//获取5个随机数
Random r = new Random();
//获取数据的范围,[0,5)
for (int i = 0; i < 5; i++) {
int number = r.nextInt(5);
System.out.println(number);
}
}
}