Java04 流程控制语句
一、循环语句
1、for语句
1.1 格式
/*
学习循环是为了减少大量重复代码的编写
*/
for(初始化语句;条件判断语句;条件控制语句){
循环语句体;
}
-
初始化语句:定义变量
-
条件判断语句:循环条件
-
条件控制语句:改变变量,语句不局限于++
-
循环体语句:循环任务
1.2 小Demo统计水仙花数
需求:在控制台输出所有的“水仙花数”并统计水仙花的个数
public class LoopTest3 {
/*
水仙花数 指的是一个三位数,其个位、十位、百位的数字立方和等于原数
*/
public static void main(String[] args) {
printFlower();
int count = getCount();
System.out.println("水仙花数的个数为:"+count);
}
public static int getCount() {
int count = 0;
for (int i = 100; i <= 999; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 % 10;
if (ge * ge + shi * shi + bai * bai == i) {
System.out.println(i);
count++;
}
}
return count;
}
public static void printFlower () {
for (int i = 100; i <= 999; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 % 10;
if (ge * ge + shi * shi + bai * bai == i) {
System.out.println(i);
}
}
}
}
1.3 for循环的注意事项
-
循环中,用于控制循环的变量还可以放在循环体中继续进行使用
-
for循环{ }中定义的变量,每轮循环结束后都会从内存中释放
-
for循环 ( ) 中定义的变量,在整个循环结束后,都会从内存中释放
-
循环语句()和 { } 之间不要写分号
for(int i=1;i<=5;i++);{ 这里带分号,分号表示语句运行结束,i会被释放,下面打印会报错 System.out.printIn(i); }
-
防止粗心造成的无限循环(死循环)
1.4 循环嵌套
循环嵌套: 在循环语句中, 继续出现循环语句
for(int i = 1;i<= 5;i++){ //外循环
for(int j = 1;j<= 5;j++){ //内循环
System.out.printIn("helloworld");
}
}
//结果打印25遍helloworld
外循环执行一次,内循环执行一圈
2、while循环语句
2.1 格式
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
//打印5遍helloworld
public class WhileDemo {
public static void main(String[] args) {
int i =1;
while(i<=5){
System.out.println("helloworld");
i++;
}
}
}
3、do...while循环语句
3.1 格式
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
特点:无论判断条件是否满足都至少执行一次循环体
4、三种循环的区别
-
for、while和do...while的区别
-
for循环 和 while循环(先判断后执行)
-
do...while (先执行后判断)
-
-
for和while的区别
-
for循环中,控制循环的变量,在for循环结束后,就不能再次被访问到了
-
while循环中,控制循环的变量,在while循环结束后,该变量还可以继续使用
-
-
如何选择
for循环能实现的while循环都可以实现。一般明确循环次数用for循环,不明确循环次数用while
5、跳转控制语句
5.1 break
终止循环体内容的执行,也就是说结束当前的整个循环。只能在循环和switch当中进行使用
5.2 continue
跳过某次循环体内容的执行,继续下一次的执行。只能在循环中进行使用。
public class ContinueDemo {
/*
continue:跳过
*/
public static void main(String[] args) {
for (int i = 1; i <= 10 ; i++) {
if(i==3 ||i==5){
continue;
}
System.out.println("老师正在给第"+i+"位同学发冰棍儿~");
}
}
}
运行结果
老师正在给第1位同学发冰棍儿~ 老师正在给第2位同学发冰棍儿~ 老师正在给第4位同学发冰棍儿~ 老师正在给第6位同学发冰棍儿~ 老师正在给第7位同学发冰棍儿~ 老师正在给第8位同学发冰棍儿~ 老师正在给第9位同学发冰棍儿~ 老师正在给第10位同学发冰棍儿~
5.3 使用跳转控制的注意事项
-
这俩关键字下面不能写代码,因为执行不到,属于无效代码
-
如果遇到了循环的嵌套,break和continue都是操作离自己最近的那个循环。如果想要区分,要对循环进行标号
public class Demo { public static void main(String[] args) { lo: //外循环的标号 for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 5; j++) { if (j == 2) { break lo; //结束外循环 } System.out.println("黑马程序员"); } } } }
6、三种循环的无限循环格式
//for的无限循环格式
for(;;){
System.out.println("我是for的无限循环格式");
}
//while的无限循环格式
while(true){
System.out.println("我是whilw的无限循环格式");
}
//do...while的无限循环格式
do{
System.out.println("我是do...while的无限循环格式");
}while(true);
注意:一旦使用了无限循环,就要考虑循环出口问题
二、Random随机数
1、Random介绍
Random产生随机数
2、Random的使用步骤
import java.util.Random; //导包,一般工具会自动导入
public class Test{
public static void main(String[] args){
Random r = new Random();
int num = r.nextInt(20); //1-20以内的随机数,不包含20
int num1 = r.nextInt(100)+1; //产生1-100的随机数,r.nextInt(100)产生的随机数范围 0~99不包含99
}
}
3、猜数字小游戏
需求: 猜数字小游戏
1、Random产生一个1-100之间的随机数 2、Scanner键盘录入用户猜的数据 3、比大小
public class RandomTest {
public static void main(String[] args) {
Random r = new Random();
Scanner sc = new Scanner(System.in);
int randomNumber = r.nextInt(100) + 1;
while (true) {
System.out.println("请输入:");
int inputNumber = sc.nextInt();
if (inputNumber > randomNumber) {
System.out.println("猜大了");
} else if (inputNumber < randomNumber) {
System.out.println("猜小了");
} else {
System.out.println("恭喜,猜对了!");
break;
}
}
}
}