Java(三) 循环结构
循环结构:
1.for循环:
格式: for(初始化语句;循环判断语句;循环后的步进语句){
循环体;
}
循环执行流程:
1.执行初始化语句 [只执行一次]
2.执行循环判断语句
false -> 跳出循环体(结束)
true -> 执行循环体(继续)
3.执行循环体
4.执行循环后的步进语句
5.执行判断条件语句
false -> 结束循环
true -> 继续循环
.....
2.for循环练习:
(1)求1-5的数据和
int sum= 0;
for(int i =1;i<=5;i++){
sum+=i;
/*
* 计数器思想
* 当 sum= 0 + i = 1 sum= 1
* 1 2 3
* 3 3 6
* 6 4 10
* 10 5 15
* */
}
Q:sum为什么定义for循环的外面?
A:如果定义在for循环中,那么每一次进入循环体,变量都会重新重置为0,运算的结果就会出错.并且如果for循环外部调用时,会报错,for循环结束sum也会消失
(2)求1-100的偶数之和
int sum = 0;
for(int i=0;i<=100;i+=2){
sum+=i;
}
(3)统计100--999的水仙花数
int count = 0;
int i =0;
for(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){//如果每一位的立方和相加的结果还等于该数本身就是水仙花数
count++; //记录进来的值(水仙花)
System.out.println(i);
}
}
System.out.println("一共有:"+count);
(4)循环嵌套输入99乘法口诀表
for (int i = 1; i <= 9; i++) {//控制行
for (int j = 1; j <= i; j++) {//控制列
System.out.print(j + "*" + i + "=" + (j * i) + "\t");//输出,不换行 \t空格
}
System.out.println();//换行
}
3.while循环
格式:
基本格式: 完整格式:
初始化语句;
while(判断条件语句){ while(判断条件语句){
循环体; 循环体;
} 循环后的步进语句;
}
执行流程:
1.初始化语句,只执行一次.
2.执行判断条件语句.
false -> 结束循环
true -> 执行循环体
3. 执行循环后的步进语句
4. 判断条件语句
false -> 结束循环
true -> 继续循环
...
4.while循环练习
(1)while求1-100之间数据的和
int sum = 0;
int i = 1;
while(i<=100){
sum += i;
sum++;
}
(2)使用whlie循环打印一个四行五列的星星 [循环嵌套] 外循环控制的是(行), 内循环控制的是(列)
int i = 1;
while (i <= 5) {
int j = 0;
while (j <= 4) {
System.out.print("*");
j++;
}
i++;
System.out.println();
}
5.do..while
格式:
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
1. 初始化语句;
2. 循环体语句;
3. 控制条件语句;
4. 判断条件语句
false:结束循环
true:继续执行循环
特点: do..while循环,无论条件是否满足,都会至少执行'一次.
6.三种循环的区别(总结)
1.for循环,while循环和do..while循环的区别
for循环和while循环,只要满足判断语句循环,才会执行循环体
do..while循环无论条件是否成立都会执行一次\
2.for和while的区别:
for循环在内部定义的变量,在循环结束后,变量会被释放掉
while,在循环结束后,可以继续使用控制循环的那个变量
7.思考
1.for循环的初始化表达式能否定义在for循环外面
int i = 1;
for(; i <= 5; i++){
System.out.println("HelloWorld");
}
System.out.println(i);
2.for循环的初始化表达式和判断条件以及控制循环语句能否有多条??
for(int i = 0, j = 100; (i <= 100) && (j >= 0); i++,j--){
System.out.println(i+","+j);
}
3.无限循环(死循环)
for: for(;;){}
while: while(true){}
8.跳转控制语句break的概述和使用
1: break可以用于结束循环,还可以用于结束switch语句
eg: swith(){
case 1:
break;
...
}
2:一般都是在循环当中,达成某种条件,使用break语句结束循环.
public static void main(String[] args) {
lo:while(true){
for(int i = 1; i <= 10; i++){
if(i == 3){
break lo;
}
System.out.println("HelloWorld");
}
System.out.println("------------");
}
}
9.跳转控制语句continue的概述和使用
1: 终止本次循环,继续下次循环(跳过)
2: continue只能应用在循环当中
for (int i = 1; i <= 20; i++) {
if (i == 4 || i == 18) { //当 i = 4 or 18是,跳过.
continue;
}
System.out.println("第" + i + "层到了");
}
10.Random
1.Random用于生产随机数
2.
1. 导入包
import java.util.Random;
2. 创建Random对象
Random r = new Random();
3. 调用nextInt功能产生随机数
int num = r.nextInt(100) + 1; -> r.nextInt(100); 是0-99的数值 | r.nextInt(100)+1; 是1-100的数值
(1)系统产生一个1-100之间的随机数,请猜出这个数据是多少。
// 1. 创建Random对象用于生成随机数
Random r = new Random();
int num = r.nextInt(100) + 1;
// 2. 创建键盘录入对象, 用于实现用户的交互
Scanner sc = new Scanner(System.in);
// 3. 定义无限循环,不断的接受键盘录入的数据
while(true){
System.out.println("请输入您要猜的数:");
int content = sc.nextInt();
// 4. 拿着用户输入的数据跟心里想的数据进行比较, 然后给予提示
if(content > num){
System.out.println("大了");
}else if(content < num){
System.out.println("小了");
}else {
System.out.println("中了");
break;
}
2019-03-04

浙公网安备 33010602011771号