while循环语句
while语句是Java最基本的循环语句,是一种先判断在执行的循环语句,在一定条件下执行while语句的代码块,如果while语句里的条件为真,则执行代码块里的语句,也可以执行多个,如果为假,则直接跳出循环体。
while语法结构
while(条件表达式){
语句块;
}
其中语句块可以是一条或多条语句,条件表达式是一个Boolean表达式,他决定是否执行。执行一次之后是否还满足条件表达式,满足那就在执行,一直到条件表达式不满足时就跳出循环。
例1
编写一个Java程序,循环输出5个hello world!
public class dome2{
public static void main(String[] args) {
int a=0;
while(a<5) {
System.out.println("hello world");
a++;
}
}
}
答案
hello world!
hello world!
hello world!
hello world!
hello world!
while语句嵌套
在一些复杂的程序中,while可以嵌套书写,例如输出一个正方形。
public class dome2{
public static void main(String[] args) {
int a=0;
int b=0;
while(a<5) {
while(b<5) {
System.out.print("*");
b++;
}
b=0;
a++;
System.out.println();
}
}
}
答案
*****
*****
*****
*****
*****
print与println区别在于print输出完之后不换行,下一个输出紧接着后面,而println输出完之后直接换行,下一个输出就另起一行,也可以用print("\n")来表示换行,\n代表转义字符换行符。
do…while循环语句
在上述的while循环语句中,它首先判别表达式的真假,是否执行里面的语句块,do…while语句也是要判别条件的真假,两者最大的区别是do…while先执行代码块,后判别条件的真假,即使在条件第一次就为假时,do…while至少也要执行一次, do…while也可以实现嵌套循环。
do…while语法结构
do{
语句块;
}while(条件表达式);
例2
编写Java程序输出10的阶乘。结果是3628800
public class dome2{
public static void main(String[] args) {
int a=0;
int sum=1;
do {
a++;
sum*=a;
}while(a<10);
System.out.println(sum);
}
}
for循环语句
- for循环语句是使用最广泛,功能最强的一种,for还可以代替while,do…while循环语句。
- for循环中有三个表达式,赋值语句,条件判断语句,迭代语句。
- for循环过程:首先表达式1进行赋值初始化,第二步表达式2条件判断,如果为true,则执行循环体语句,为false则直接跳出循环,在执行表达式3,改变循环变量的值,第一次循环完成,第二次循环不用在表达式1里面赋值了,直接在表达式2里进行判断,以此循环。
- for循环语句里面的三个表达式要用分号 ; 隔开。
- for循环的表达式3在 continue 语句(跳出本次循环)的作用下照样执行
for语法结构
for(表达式1;表达式2;表达式3){
语句块;
}
例3
编写Java程序,输出10的阶乘,结果是3628800。
public class dome2{
public static void main(String[] args) {
int i;
int sum=1;
for(i=1;i<=10;i++) {
sum*=i;
}
System.out.println(sum);
}
}
for循环语句的三个表达式可以省略,但分号不可以省略,这样就是一个无限循环体,可以把三个表达式放在外面定义,判断,迭代。
表达式1省略
例4
编写Java程序,输出1-10的和,结果是10。
public class dome2{
public static void main(String[] args) {
int sum=0;
int i=1;
for(;i<=10;i++) {
sum=sum+i;
}
System.out.println(sum);
}
}
表达式2省略
例4
编写Java程序,输出1-100的偶数,涉及到if条件判断语句。
public class dome2{
public static void main(String[] args) {
for(int i=1;;i++) {
if(i%2==0) {
System.out.print(i+"\t");
}
if(i>=100)
break;
}
}
}
答案
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
break语句是指跳出整个循环并且不再循环,而continue 语句是跳出本次循环执行下一次循环,"\t"是一个转义字符–空格符
表达式3省略
例5
编写Java程序,输出1-100的和,答案是5050.
public class dome2{
public static void main(String[] args) {
int sum=0;
for(int i=1;i<=100;) {
sum=sum+i;
i++;
}
System.out.println(sum);
}
}
三个表达式都省略
三个表达式省略类似与while一样,在外部初始化进行初始化,在代码循环体中进行变量的改变。
例6
编写Java程序,输出1-100的累加和,答案是5050。
public class dome2{
public static void main(String[] args) {
int sum=0;
int i=1;
for(;;) {
sum=sum+i;
if(i>=100) {
break;
}
i++;
}
System.out.println(sum);
}
}
for循环嵌套语句
for嵌套语句比while嵌套要常用一些,外层循环控制内层循环的执行结果。
例7
编写Java程序,输出九九乘法表。
public class dome2{
public static void main(String[] args) {
for(int i=1;i<10;i++) {
for(int j=1;j<=i;j++) {
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
}
}
11=1
12=2 22=4
13=3 23=6 33=9
14=4 24=8 34=12 44=16
15=5 25=10 35=15 45=20 55=25
16=6 26=12 36=18 46=24 56=30 66=36
17=7 27=14 37=21 47=28 57=35 67=42 77=49
18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=64
19=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 9*9=81
foreach循环
foreach是for循环的简化版,取消了变量赋值等操作,极大的提高了遍历数组和集合。
语法结构:
for(类型 变量:集合变量){
语句块
}
public class dome2{
public static void main(String[] args) {
int[] num= {12,34,23,6,7,8,34,5};
for (int i : num) {
System.out.print(i+"\t");
}
}
}
结果
12 34 23 6 7 8 34 5