顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。
Java中有三种主要的循环结构:
- while 循环
- do…while 循环
-
while 循环
while是最基本的循环,它的结构为:
while( 布尔表达式 ) {
//循环内容
}
只要布尔表达式为 true,循环就会一直执行下去。
public class Test {
public static void main(String args[]) {
int x = 1;
while( x < 6 ) {
System.out.print("x的值为: " + x);
x++;
System.out.println();
}
}
}
以上实例编译运行结果如下:
x的值为:1
x的值为:2
x的值为:3
x的值为:4
x的值为:5
do…while 循环
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。do {
//代码语句
}while(布尔表达式);
备注:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
public class Test {
public static void main(String args[]){
int x = 1;
do{
System.out.print(""x的值为: " + x );
x++;
System.out.println();
}while( x < 6 );
}
}
以上实例编译运行结果如下:
x的值为:1
x的值为:2
x的值为:3
x的值为:4
x的值为:5
for循环
虽然所有循环结构都可以用 while 或者 do…while表示,但 Java 提供了另一种语句 —— for 循环,使一些循环结构变得更加简单。
for循环执行的次数是在执行前就确定的。语法格式如下:
for(初始化; 布尔表达式; 更新) { //代码语句}
关于 for 循环有以下几点说明: 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
- 然后,检测布尔表达式的值。如果true,循环被执行。如果false,循环终止,开始执行循环体后面的语句。
- 执行一次循环后,更新循环控制变量。
- 再次检测布尔表达式。循环执行上面的过程。
以上实例编译运行结果如下:public class Test {
public static void main(String[] args) {
//for循环用来遍历数组(依次打印数组中每一个值)
int[] arr = {22,32,-40,80,10};
for (int i = 0; i < arr.length; i++){
System.out.print(arr[i]);
}
System.out.println();
//倒叙输出数组
for (int i = arr.length - 1; i >= 0; i--) {
System.out.print(arr[i]);
}
}
}
求和思想,利用for循环求值22 32 -40 80 10
10 80 -40 32 22
以上实例编译运行结果如下:public class Test {
public static void main(String[] args) {
/**
* 分别求出0-100中奇数和与偶数和
* evenNumbersSum 偶数和
* oddNumbersSum 奇数和
*/
int evenNumbersSum = 0;
int oddNumbersSum = 0;
for (int i = 1;i<=100;i++){
//System.out.println(i);
if (i%2 == 0){
evenNumbersSum += i;
}else { //此处也可用if或者else if,判断条件可写 i%2 != 0;,因只有两种可能我就偷懒用else
oddNumbersSum += i;
}
}
System.out.println("0-100中偶数相加的和为"+evenNumbersSum);
System.out.println("0-100中奇数相加的和为"+oddNumbersSum);
}
}
嵌套for循环打印等边三角形:0-100中偶数相加的和为2550
0-100中奇数相加的和为2500
以上实例编译运行结果如下:public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 4; j >= i; j--) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print(" *");
}
System.out.println();
}
}
}
*
* *
* * *
* * * *
* * * * *
Java 增强 for 循环
Java 增强 for 循环语法格式如下:
for(声明语句 : 表达式)
{
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。for增强有个缺陷就是拿不到数组的索引。
public class Test {
public static void main(String[] args) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.println("");
String [] names ={"詹姆斯", "科比", "哈登", "杜兰特"};
for( String name : names ) {
System.out.print( name );
System.out.print(",");
}
}
以上实例编译运行结果如下:
0,20,30,40,50,
詹姆斯,科比,哈登,杜兰特,
利用for循环进行数组的冒泡排序
public class Test {
public static void main(String[] args) {
/**
* 将数组[4,1,3,2,5,9,10.30,10,59]按小到大顺序排列
* 冒泡排序原理:相邻两个相比大的往后排
*/
int [] arrayList = {4,1,3,2,5,9,100,30,10,59};
for (int i = 0; i < arrayList.length; i++) {
for (int j = 0; j <arrayList.length-1-i; j++) {
if (arrayList[j]>arrayList[j+1]){
int temp = arrayList[j];
arrayList[j] = arrayList[j+1];
arrayList[j+1] = temp;
}
}
}
for (int newArrayList : arrayList) {
System.out.print(newArrayList);
System.out.print(",");
}
}
}
以上实例编译运行结果如下:
1,2,3,4,5,9,10,30,59,100,