循环语句
-
主要解决循环重复的问题——(计算逻辑上的重复)
-
循环四要素
1.循环的初始化
2.循环的继续条件(结束条件)
3.循环的循环体(需要循环的部分操作)
4.循环的步长,周期,间距 -
for循环语句——主要解决循环次数已知的的情况
for(1初始化;2继续条件;4步长){
3循环体;
}
for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3)){
执行语句(4);
}
执行顺序:for里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复该过程,直到条件不满足为止。
- for循环语句与while循环语句可以相互转换,根据循环次数是否已知进行选择。
- while循环语句——主要解决循环次数未知的情况
1初始化;
while(2继续条件){
3循环体;
4步长
}
执行顺序:当程序遇到while关键字时,JVM首先会运算while后面的条件表达式,当条件表达式为true时,就会执行while后面大括号中的语句,当把大括号中的所有语句执行完之后,会又回到while的条件表达式处再次判断,若还为true,就继续执行大括号中的语句,若为false就跳过大括号中的所有语句,继续往下执行。
- do while循环语句——无论条件是否满足,循环体至少被执行一次
do{
执行语句;
}while(循环条件表达式);
执行顺序:先执行do后面的语句,当执行完之后再进入条件表达式进行判断,若条件表达式结果为true继续执行do后面的语句,若条件表达式结果为false,则结束循环。
循环语句入门训练
class Demo01{
/*
*****
*****
*****
*****
*/
public static void main(String[] args){
for(int i=1;i<=4;i++){
for(int j=1;j<=5;j++){
System.out.print("*");
}
System.out.println();
}
}
}
/*
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
*/
class Demo02{
public static void main(String[] args){
for(int i=1;i<=9;i++){
for(int j=1;j<=i&&j<=10-i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
class Demo03{
/* i k j
* 1 -5 1
** 2 -4 2
*** 3 -3 3
**** 4 -2 4
***** 5 -1 5
****** 6 0 6
***** 7 1 5
**** 8 2 4
*** 9 3 3
** 10 4 2
* 11 5 1
*/
public static void main(String[] args){
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
class Demo04{
/* i k j
* 1 -5 1
** 2 -4 1 2
*** 3 -3 1 2 3
**** 4 -2 1 2 3 4
***** 5 -1 1 2 3 4 5
****** 6 0 1 2 3 4 5 6
***** 7 1 1 2 3 4 5
**** 8 2 1 2 3 4
*** 9 3 1 2 3
** 10 4 1 2
* 11 5 1
在上述图形中,再生成一个菱形,就是将之前每次打印"*"时变成"* "
*/
public static void main(String[] args){
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("* ");
}
System.out.println();
}
}
}
class Demo05{
/* i k j
* 1 -5 1
** 2 -4 1 2
*** 3 -3 1 2 3
**** 4 -2 1 2 3 4
***** 5 -1 1 2 3 4 5
****** 6 0 1 2 3 4 5 6
***** 7 1 1 2 3 4 5
**** 8 2 1 2 3 4
*** 9 3 1 2 3
** 10 4 1 2
* 11 5 1
在上述图形中,再生成一个菱形,就是将之前每次打印"*"时变成"* "
在生成菱形后,只留个边,中间变为空格
j==1||j==i||j==12-i;
*/
public static void main(String[] args){
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
if(j==1||j==i||j==12-i){
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
class Demo06{
/* i k j
* 1 -5 1
** 2 -4 1 2
*** 3 -3 1 2 3
**** 4 -2 1 2 3 4
***** 5 -1 1 2 3 4 5
****** 6 0 1 2 3 4 5 6
***** 7 1 1 2 3 4 5
**** 8 2 1 2 3 4
*** 9 3 1 2 3
** 10 4 1 2
* 11 5 1
在上述图形中,再生成一个菱形,就是将之前每次打印"*"时变成"* "
在生成菱形后,只留个边,中间变为空格
j==1||j==i||j==12-i;
将Demo05中的for循环改为while循环
*/
public static void main(String[] args){
int i=1;
while(i<=11){
int k=1;
while(k<=Math.abs(i-6)){
System.out.print(" ");
k++;
}
int j=1;
while(j<=i&&j<=12-i){
if(j==1||j==i||j==12-i){
System.out.print("* ");
}else{
System.out.print(" ");
}
j++;
}
System.out.println();
i++;
}
}
}