if、switch, for、while、do...while, Radom
流程控制语句
顺序结构:
按照代码的顺序依次执行,从左到右,从上到下。
分支结构 (if,switch):
循环结构(for,while,do…while):
分支结构
if语句
if语句
格式1:
if(关系表达式){
语句体;
}
实例:
public class Demo1If {
public static void main(String[] args){
int age=17;
if(age>=18){
System.out.println("可以上网吧");
}
}
}
打印结果:
什么也不打印
注意事项:
- 如果if语句所控制的语句体,是一条语句,可以省大括号,但是不建议。
- if语句的小括号后面,不要写分号;
if else语句
格式2:
if(关系表达式){
语句体1;
}else{
语句体2;
}
只执行其中一个语句体
实例: 判断奇偶
public class Demo2If {
public static void main(String[] args){
int num=10;
if(num%2==0)
{
System.out.println("偶数");
}else
{
System.out.println("奇数");
}
}
}
打印结果:
偶数
if else if 语句
if语句格式3:
if(判断条件1){
语句体1;
}
else if(判断条件2){
语句体2;
}
else
{
语句体n+1;
}
实例:
public class Demo3If {
public static void main(String[] args)
{
int score=60;
if(score>=90&&score<=100)
{
System.out.println("优秀");
}
else if (score>=80&&score<=89)
{
System.out.println("良好");
}
else if (score>=70&&score<=79)
{
System.out.println("中等");
}
else if (score>=60&&score<=69)
{
System.out.println("及格");
}
else if(score>=0&&score<=59)
{
System.out.println("请努力加油");
}
else
{
System.out.println("您的程序有误");
}
}
}
打印结果:
及格
switch语句
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体1;
break;
default:
语句体n+1;
break;
}
实例:
public class Demo3If {
public static void main(String[] args)
{
int week=5;
switch (week)
{
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("您的数据有误");
break;
}
}
}
打印结果:
星期五
注意事项:
- case给出的值不允许重复
- case后面的值只能是常量,不能是变量
switch语句的case穿透
如果switch语句中,case省略了break语句,就会开始case穿透;
当开始case穿透,后续的case就不会有匹配效果,内部的语句都会执行,直到看见break,或者将整体switch语句执行完毕,才会结束。
实例:
import java.util.Scanner;
public class Demo3If {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入星期数");
int week=sc.nextInt();
switch (week)
{
case 1:
System.out.println("工作日day1");
// break;
case 2:
System.out.println("工作日day2");
break;
case 3:
System.out.println("工作日");
break;
case 4:
System.out.println("工作日");
break;
case 5:
System.out.println("工作日");
break;
case 6:
System.out.println("休息日");
break;
case 7:
System.out.println("休息日");
break;
default:
System.out.println("您的数据有误");
break;
}
}
}
输入数据:
1
打印结果:
工作日day1
工作日day2
实例2:穿透现象的使用
import java.util.Scanner;
public class Demo3If {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入星期数");
int week=sc.nextInt();
switch (week)
{
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
default:
System.out.println("您的数据有误");
break;
}
}
}
输入数据:
3
打印结果:
工作日
循环结构
for 循环语句
for循环格式介绍:
for(初始化语句;条件判断语句;条件控制语句)
{
循环体语句;
}
执行过程:
<1>、 执行初始化语句,设置循环的初始状态,此部分在整个循环中只执行一次
<2>、执行条件判断语句,如果条件为 true ,则执行循环体内代码;如果为 false ,则直接退出循环
<3>、 执行条件控制语句,改变循环变量的值,以便进行下一次条件判断
<4>、 依次重新执行< 2 >、< 3 >、< 4 >,直到退出循环
实例:
public class Demo1For {
public static void main(String[] args){
for(int i=1;i<=3;i++)
{
System.out.println("折返跑");
}
}
}
打印结果:
折返跑
折返跑
折返跑
实例: 求1-100的偶数和
public class Demo1For {
public static void main(String[] args){
int sum=0;
for(int i=1;i<=100;i++)
{
if(i%2==0)
sum+=i;
}
System.out.println("数据1-100的偶数和为"+sum);
}
}
打印结果:
数据1-100的偶数和为2550
经典案例:水仙花数
public class Demo1For {
public static void main(String[] args) {
int count=0;
for (int i = 100; i <= 999; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
System.out.print(i+" ");\\不带换行的打印输出
count++;
if(count%2==0)
{
System.out.println();\\带换行的打印输出
}
}
}
}
}
打印结果:
153 370
371 407
while循环语句
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
< 1 >、执行初始化语句
< 2 > 、执行条件判断语句,判断 while 后面的条件是否成立( true / false )
< 3 >、 如果是true,执行循环内的操作代码
< 4 >、 执行条件控制语句
实例:
public class Demo2While {
public static void main(String[] args){
int count=0; //折叠次数
double paper=0.1; //纸张厚度
int zf=8844430; //珠穆朗玛峰厚度
while(paper<=zf){
paper*=2;
count++;
}
System.out.print(count);
}
}
do while循环语句
do{
循环体语句;
}while(条件循环语句);
public class Demo2While {
public static void main(String[] args){
int count=11;
do {
System.out.print("程序员");
}while(count<=10);//count=11不满足循环条件
}
}
打印结果:
程序员
分析原因:
循环体至少被执行一次,无论循环条件是否成立
三种循环的区别
- for和while循环先判断条件是否成立,然后确定是否执行循环体
- do…while先执行一次循环体,然后判断条件是否成立,是否继续执行循环体
public class Demo2While {
public static void main(String[] args){
for(int i=1;i<=3;i++)
{
System.out.println(i);
}
//System.out.println(i);错误找不到符号
int j=3;
System.out.println("--------");
while(j>=1)
{
System.out.println(j);
j--;
}
System.out.println("最终的j是"+j);
}
}
打印结果:
1
2
3
--------
3
2
1
最终的j是0
分析原因:
for和while的区别:
条件控制语句所控制的自增变量,因为归属for循环的语法结构,在for循环结束,就不能再次被访问到了
条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构,在while循环结束后,该变量还可以继续使用
死循环
死循环格式:
for(;;)
{
循环体;
}
while(true)
{
循环体;
}
do {
循环体;
}while(true);
while的死循环格式是最常用的 命令提示符窗口中的ctrl+C 可以结束死循环
跳转控制语句
break
作用: 结束当前的循环
实例:
public class Demo4Break {
public static void main(String[] args)
{
for(int i=1;i<=5;i++)
{
if(i==4)
{
break;
}
System.out.println(i+"层到了");
}
}
}
打印结果:
1层到了
2层到了
3层到了
continue
**作用:**跳过循环体中剩余的语句执行下一次循环。
实例:
public class Demo3Continue {
public static void main(String[] args)
{
for(int i=1;i<=5;i++)
{
if(i==4)
{
continue;
}
System.out.println(i+"层到了");
}
}
}
打印结果:
1层到了
2层到了
3层到了
5层到了
break只可以跳出一层循环,如果需要跳出多层加标号
loop: while{
for(int i=0;i<5;i++)
{
if(i==3}
{
break loop;
}
}
Random
Random:产生随机数
- 导包:import java.util.Random;
- 创建对象:
Random r=new Random();
其中r是变量名 - 获取随机数
int number =r.nextInt(10)//获取随机数的范围:[0,10)
实例:产生0到9的随机数
import java.util.Random;
public class Demo1Random {
public static void main(String[] args){
Random r=new Random();
for(int i=0;i<5;i++)
{
int number =r.nextInt(10);
System.out.println(number);
}
}
}
打印结果:
产生1-10的随机数
int number =r.nextInt(10)+1;//产生随机数1到10
实例猜数字
程序自动生成1-100之间的数字,是程序猜出这个数字是多少
import java.util.Random;
import java.util.Scanner;
public class Demo2Random {
public static void main(String[] args){
Random r = new Random();
Scanner sc=new Scanner(System.in);
int randomNum =r.nextInt(100)+1;
while(true)
{
System.out.println("请输入您猜的数据");
int num =sc.nextInt();
if(num>randomNum)
{
System.out.println("猜大了");
}
else if(num<randomNum)
{
System.out.println("猜小了");
}
else
{
System.out.println("猜中了");
break;
}
}
}
}
打印结果: