Java语言中用来实现循环控制的有三种,while循环,do-while循环,for循环。
while循环
比较简单,与C语言相同
来一个demo
package Liu;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int count = 1;
while(count<=20) {
if(count%2 == 1) {
System.out.print(count+" ");
}
count++;
}
}
}
/*输出
*1 3 5 7 9 11 13 15 17 19
*/
while循环是直到while后面的判断条件不成立的时候才退出循环。还可以用break语句写“死循环”语句
do-while循环
do-while型循环是直到型循环,与while循环有一定区别,while循环是先判断条件表达式,再决定是否进行循环;而do-while循环是先执行循环体一次,再判断条件表达式,决定是否进行循环。
do-while循环执行时,先执行循环体body,再判断条件表达式,为真时执行循环体,当条件表达式为false时终止循环。
来一个demo
/**
* 输出1-50中既可以被3整除又可以被7整除的自然数,要求用do-while表达式
*/
package Liu;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num =1;
do {
if(num%3==0 && num%7==0) {
System.out.print(num + " ");
}
num++;
}while(num<=50);
}
}
/*输出
* 21 42
*/
while循环和do-while循环可以相互转换
for循环
for循环是最标准的循环语句,其功能也最为强大,实现当型循环。下面将给出实现100以内的所有素数和求100以内所有偶数累加和来使用for循环
/**
* 输出100以内所有素数,要求用for循环
*/
package Liu;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
int tag;//声明标记值
for(int i=2;i<=100;i++) {
tag = 0; //标记值归0
for(int j=1;j<=Math.sqrt(i);j++) {
if(i%j==0) {
tag++; //统计因子个数
}//if
}//for(j)
if(tag==1) { //如果是素数则输出
System.out.print(i + " ");
}//if
}//for(i)
}//main
}
/*输出
* 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
*/
/**
* 输出100以内偶数和,要求用for循环
*/
package Liu;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;//声明求和
for(int i=2;i<=100;i=i+2) {
sum = sum + i;//累加
}
System.out.println("100以内偶数和:" + sum);
}//main
}
/*输出
* 100以内偶数和:2550
*/
多重循环
循环嵌套执行过程为:每执行一次外层循环,内层循环要按照循环条件执行,直到内层循环退出,再执行,最后外层循环退出。
下面也给出例子实现
编写程序,将9,12,3,30,8按照从小到大顺序输出
/**]
* 输出100以内偶数和,要求用for循环
*/
package Liu;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arg = {9,12,3,30,8};//初始化arg数组
//进行排序
int temp;//声明临时变量
for(int i=0;i<arg.length;i++) {
for(int j=0;j<arg.length-i-1;j++) { //每一趟循环都把最大的元素挤到最后面
//
if(arg[j]>arg[j+1]) { //j<arg.length-i-1防止下标arg[j+1]越界
temp = arg[j];
arg[j] = arg[j+1];
arg[j+1] = temp;
}//if
}//for(j)
}//for(i)
//从大到小输出数组arg
for(int k=0;k<arg.length;k++) {
System.out.print(arg[k] + " ");
}
}//main
}
/*输出
* 3 8 9 12 30
*/