Day 2 循环
while循环
while(/*布尔表达式*/){
//逻辑代码(循环操作)
}
先判断,后执行,直到布尔表达式值为false退出循环
特点:首次即有入口条件,先判断后执行,首次判断不满足,则一次都不会执行,适用于循环次数明确的情况。
例:
求1~100的偶数和
public class HelloWorld{
public static void main(String args[]){
int i = 2,w = 0;
while(i <= 100){
w += i;
i += 2;
}
System.out.println(w);
}
}
do while循环
do{
//逻辑代码(循环操作)
}while(/*布尔表达式*/);
先执行一次循环操作之后再进行判断,为false退出循环,为true继续执行。
特点:首次入口没有条件,先执行再判断。适用于循环次数不明确的情况。
for 循环
特点:首次即有入口条件,先判断后执行,首次判断不满足,则一次都不会执行,适用于循环次数明确的情况。
案例:
在控制台输入整数n,计算n的阶乘(!n)
import java.util.Scanner;
public class HelloWorld{
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
int n,w = 1;
n=scan.nextInt();
for (int i = 1;i<=n ;i++ ) {
w*=i;
}
System.out.println(w);
}
}
流程控制
break
终止并跳出整个循环结构
for(int i = 1;i<=5;i++){
if(i==3){
break;
}
System.out.println("循环第"+i+"次");
}
System.out.println("循环结束");
//运行结果
循环第1次
循环第2次
循环结束
continue
结束本次循环、进入下一次循环
for(int i = 1;i<=5;i++){
if(i==3){
continue;
}
System.out.println("循环第"+i+"次");
}
System.out.println("循环结束");
//运行结果
循环第1次
循环第2次
---------(continue跳过)
循环第4次
循环第5次
循环结束
附注:经典案例
ATM机(练习do…while和switch)
import java.util.Scanner;
public class ATM{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int input;
do{
System.out.println("\t========欢迎使用ATM自助银行========");
System.out.println("1:开户 2:存款 3:取款 4:转账 5:查询余额 6:修改密码 0:退出");
System.out.println("\t===================================");
System.out.println("请输入操作编号:");
input = scan.nextInt();
switch(input){
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 0:
System.out.println("执行退出操作!");
break;
default:
System.out.println("输入有误,请重新输入!");
break;
}
}while(input != 0);
}
}
生成指定行数菱形(练习多重for循环)
import java.util.Scanner;
public class TestFor4{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int input;
do{
System.out.println("请输入菱形行数:(仅限单数)");
input = scan.nextInt();
}while(input % 2 == 0);
int n = (input+1)/2;
for(int i = 1;i <= n;i++){
for (int j = 1;j <= n-i ;j++ ) {
System.out.print(" ");
}
for (int k = 1;k <= 2*i-1 ;k++ ) {
System.out.print("*");
}
System.out.println("");
}
for (int i = 1;i < n ;i++ ) {
for (int j = 1;j <= i ;j++ ) {
System.out.print(" ");
}
for (int k = 2*(n-i)-1;k > 0 ;k-- ) {
System.out.print("*");
}
System.out.println("");
}
}
}
循环使用技巧和注意点
1、多重if适用于区间判断、switch适用于等值判断
2、循环的组成部分(正确有效的循环组成)
1、初始部分 2、条件判断 3、循环操作 4、迭代部分
3、当前循环条件判断谁,谁才是当前循环的初始部分和迭代部分
4、while循环控制和操作分开思考 循环操作 ——–> 循环次数
5、循环:
图形:外层控制行数,内层控制列数
其他:外层控制循环次数,内层控制单层循环操作