1、for循环
1、for循环语句格式:
for(初始操作;循环继续条件;每次迭代后的操作){
循环体
}
2.for循环的流程图如图a所示
3、注意:
控制变量必须在循环控制结构体内或循环前说明
for循环中的初始动作和每次迭代后的动作可以是0个或多个以逗号隔开的变量声明声明语句或赋值表达式。如下 :
for(int i=0, j=0; i+j<10; i++,j++){
//语句块
}
如果省略for循环中的循环继续条件,则隐含的认为循环继续条件为true,称为死循环,如下
for(;;){
// 语句块
}
for(;true;){
//语句块
}
for循环适用于循环次数已知的循环
4、for循环典型案例
a. 打印出下面图形
*
**
***
****
*****
******
for(int i=1;i<=6;i++){ //i 表示行数
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println(); //换行
}
b. k i
* 5 1
** 4 2
*** 3 3
**** 2 4
***** 1 5
****** 0 6
for(int i=1;i<=6;i++){ //行数
for(int k=1;k<=6-i;k++){ //空格
System.out.print(" ");
}
for(int j=1;j<=i;j++){
System.out.print("*"); //*数
}
System.out.println();
}
c.
i j
* 1 1
** 2 1 2
*** 3 1 2 3
**** 4 1 2 3 4
***** 5 1 2 3 4 5
****** 6 1 2 3 4 5 6 //分水岭
***** 7 1 2 3 4 5
**** 8 1 2 3 4
*** 9 1 2 3
** 10 1 2
* 11 1
for(int i=1;i<=11;i++){
for(int j=1;j<=i&&(i+j)<=12;j++){ //前六行依赖于j<=i 后五行依赖于(i+j)<=12
System.out.print("*");
}
System.out.println();
}
d.
k i j
* -4 1 1
** -3 2 1 2
*** -2 3 1 2 3
**** -1 4 1 2 3 4
***** 0 5 1 2 3 4 5
**** 1 6 1 2 3 4
*** 2 7 1 2 3
** 3 8 1 2
* 4 9 1
for(int i=1;i<=9;i++){
for(int k=1;k<=Math.abs(i-5);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&(i+j)<=10;j++){
System.out.print("*");
}
System.out.println();
}
e.
i j
* 1 1
* * 2 1 2
* * 3 1 2 3
* * 4 1 2 3 4
* * 5 1 2 3 4 5
* * 6 1 2 3 4
* * 7 1 2 3
* * 8 1 2
* 9 1
for(int i=1;i<=9;i++){
for(int k=1;k<=Math.abs(i-5);k++){ //空格
System.out.print(" ");
}
for(int j=1;j<=i&&(i+j)<=10;j++){
if(j==1||j==i||j+i==10){ //判断*的位置
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println();
}
2.while循环
1.while循环的语法格式如下:
while( 循环继续条件){
循环体
}
2.while循环的流程图如图所示:
3.while循环注意事项:
循环继续条件应该总是放在固括号内。只有当循环体只包含一条语句或不包含语句时,循环体的花括号才可以省略。
若循环条件为true,则while循环成为死循环。所以我们要在合适条件下使用 break。代码格式如下:
while(true){
//循环体
//循环步长
// 何时退出循环break
}
while循环适合循环次数不确定的循环
4.使用while编写一个程序,随机产生一个 0到 100 之间且包含 0 和 100 的整数。程序提示用户连续输人一个数字,直到它和计算机随机产生的数字相匹配为止。对用户每次输入的数字,程序都要告诉用户该输入值是偏大了,还 是偏小了,这样用户可以明智地进行下一轮的猜测。
import java.util.*;
class Class12{
public static void main(String[] args) {
/*
1.初始化:先输入一个数字
2.继续条件:只要输入的数字不等于随机的
3.循环体:先判断
4.步长:后重新输入
while(true){
循环体
循环步长
何时退出循环break
}
*/
Scanner scanner=new Scanner(System.in);
int com=new Random().nextInt(101);//[0,n) //电脑随机生成
while(true){ //无条件开启死循环
System.out.print("Guess a number:"); //提示用户输入数字
int num=scanner.nextInt();
if(num>com){
System.out.println("too high");
}else if (com==num){
System.out.println("yes,you are right!"); //跳出循环
break;
}else{
System.out.println("too low");
}
}
}
}
3.for循环和while循环可以相互转换
如上面的while循环就可写成for循环,代码如下:
import java.util.*;
class Class12{
public static void main(String[] args) {
/*
1.初始化:先输入一个数字
2.继续条件:只要输入的数字不等于随机的
3.循环体:先判断
4.步长:后重新输入
while(true){
循环体
循环步长
何时退出循环break
}
*/
Scanner scanner=new Scanner(System.in);
int com=new Random().nextInt(101);//[0,n)
for(;;){ //无条件开启死循环
System.out.print("Guess a number:");
int num=scanner.nextInt();
if(num>com){
System.out.println("too high");
}else if (com==num){
System.out.println("yes,you are right!");
break;
}else{
System.out.println("too low");
}
}
}
}