/* 循环变量n的值必须先进行初始化; 循环变量n的值必须被改变 */ while(循环条件){ //为避免死循环,小括号后面不要写分号 语句; } //若循环体只有一条语句,能够省略大括号
案例一:java
/** * 使用while循环,求1-5的累加和 */ public class PlusDemo { public static void main(String[] args) { int n = 1; int sum = 0;//存放和的变量 while (n <= 5) { sum += n; n++; } System.out.println("循环结束后n的值为:" + n); System.out.println("累加和为:" + sum); } }
案例二:dom
/** * 使用while循环输出26个小写英文字母,分两行输出 */ public class CharDemo { public static void main(String[] args) { char ch = 'a'; int count = 1;//控制换行 while (ch <= 'z') { System.out.print(ch + " "); if (count % 13 == 0) { System.out.println(); } count++; ch++; } } }
/* do-while循环至少执行一次 循环条件后的分号不能丢 */ do{ //若只有一条语句,大括号能够省略 语句; }while(循环条件);
Tips:局部变量使用前必须初始化且只在定义它的大括号内有效oop
import java.util.Scanner; /** * 使用do-while循环完成一个猜字游戏 * 猜一个介于1-10之间的数字,将输入的数字和实际数字相比较,并给出提示 */ public class GuessDemo { public static void main(String[] args) { /* 利用Math.random()生成随机数(Math.random()生成的 随机数范围是:[0, 1),返回值类型为double类型) */ int answer = (int) (Math.random() * 10 + 1);//此时是[1, 11)的整型 int guess;//用户猜想的数字 Scanner sc = new Scanner(System.in); do { System.out.println("请输入猜想的数字:"); guess = sc.nextInt(); //提示部分 if (guess < answer) { System.out.println("过小"); } else if (guess > answer) { System.out.println("太大"); } } while (guess != answer); System.out.println("正确"); }
/* 表达式1:循环变量初始化,只执行一次 表达式2:循环条件 表达式3:改变循环变量的值 执行顺序:1. 表达式1;2. 表达式2;3.语句;4.表达式3 若省略表达式2,for循环将变成死循环 */ for(表达式1; 表达式2; 表达式3){//若只有一条语句能够省略大括号 语句; }
Tips:变量不能重复定义spa
/** * 使用for循环编写一个程序 * 求出200到300之间的数,且知足条件:它们三个数字之积为42,三个数字之和为12。 */ public class ForLoop { public static void main(String[] args) { int unit;//个位 int decade;//十位 int hundreds;//百位 //使用for循环 for(int n = 200; n <= 300; n++){ //取出百位数 hundreds = n / 100; //取出十位数 decade = n % 100 / 10; //取出个位数 unit = n % 10; //计算三个数字之积 int mul = unit * decade * hundreds; //计算三个数字之和 int sum = unit + decade + hundreds; //若是积等于42而且和为12,则将知足条件的数输出 if(mul == 42){ if(sum == 12){ System.out.println(n); } } } } }
while(循环条件){//外重循环 …… while(循环条件){//内重循环 …… } …… }
for(表达式1; 表达式2; 表达式3){//外重循环 …… for(表达式1; 表达式2; 表达式3){//内重循环 …… } …… }
案例一:code
/** * 使用while循环嵌套输出10行10列的星号 */ public class StarDemo { public static void main(String[] args) { int m = 1;//外重循环的控制变量 int n = 1;//内重循环的控制变量 System.out.println("输出10行10列的星号"); //外重循环控制输出几行 while (m <= 10) { n = 1;//从新给n赋值 //内重循环控制每行输出几个星号 while (n <= 10) { System.out.print("* "); n++; } System.out.println(); m++; } } }
案例二:使用for循环嵌套,用星号输出如图的梯形:游戏
public class StarDemo2 { public static void main(String[] args) { for(int i = 1; i <= 5; i++){//外重循环控制行数 for(int j = 1; j <= (5 - i); j++){//第一个内重循环控制输出空格的数量 System.out.print(" "); } for(int k = 1; k <= (2 * i + 1); k++){//第二个内重循环控制输出星号的数量 System.out.print("*"); } System.out.println(); } } }
之后会补一篇《Java使用循环打印图形》
案例三:ip
/** * 利用for循环嵌套输出1到10的阶乘和 */ public class FactorialDemo { public static void main(String[] args) { int mul = 1;//存放阶乘的和 int sum = 0;//存放阶乘 for(int i = 1; i <= 10; i++){ mul = 1;//重置mul的值 for(int j = 1; j <= i; j++){ mul *= j; } sum += mul; } System.out.println("阶乘值为:"+sum); } }