循环结构
循环结构
while循环
public class WhileDemon1 {
public static void main(String[] args) {
int i = 0;
while (i<100){
i++;
System.out.println(i);
}
}
}
判断while条件是否为真,为真则执行,知道条件为假,跳出循环。注意设定while结束的条件。正常编程中应该避免死循环。
使用while循环编写程序计算一个1+2+...+100的结果:
public class WhileDemon2 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while(i<=100){
sum=sum+i++;
}
System.out.println(sum);
}
}
Do...while循环
语法
do{ //代码语句
}while(布尔表达式);
public class DoWhileDemon1 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum= sum + i++;
}while (i<=100);
System.out.println(sum);
}
}
↑用do while写1加到100的程序,结果均为5050
while和do while的区别
while先判断后执行,do while先执行后判断,故do while总能保证循环体会被至少执行一次。
for...循环
是最有效最灵活的循环结构
语法
for(初始化;布尔表达式;更新){
// 代码语句
}
可以用快捷键:100.for生成一个for循环
for和while的用法对照↓
public class ForDemon1 {
public static void main(String[] args) {
int a = 0; //初始化值
while(a<100){ //布尔表达式
a+=2; //迭代 更新
System.out.println(a);
}
System.out.println("while循环结束");
for (int i = 0;//初始化值
i<100;//布尔表达式
i+=2//更新值********本次循环完成后才更新
){
System.out.println(i);
}
System.out.println("do while循环结束");
}
}
从程序结果看,while最后输出的数字为100,而for最后输出为98,这是因为for中的更新值,是在本次循环完成后才进行更新的(即循环体完成后更新)
练习
public class ForDemon2 {
public static void main(String[] args) {
//练习:计算0~100以内奇数的合,偶数的和
int oddsum = 0;//奇
int evensum= 0;//偶
for (int i = 0; i <= 100; i++) {
if (i%2==0){ //i除以2取余数等于0
evensum+=i;
}else { //不等于0
oddsum+=i;
}
}
System.out.println("奇数合为:"+oddsum);
System.out.println("偶数合为:"+evensum);
}
}
public class ForDemon3 {
public static void main(String[] args) {
// 练习:输出0~1000内能够被5整除的数,每三个换一行
for (int i = 1; i <= 1000; i++) {
if (i%5==0){
System.out.print(i+"\t");//不换行
if (i%15==0){
System.out.println("\n");}
//换行
}
}
}
}
↑↑在循环中首先判断是否能够被5整除,满足就输出 i 加空格;再判断是否能够被15整除,能够被15整除说明是本行第3个数,需要换行,本次循环体执行完成,i加1。(print输出不换行,println换行。)
打印九九乘法表
public class ForDemon4 {
public static void main(String[] args) {
for (int b = 1; b < 10; b++) {
int a = 1;
while(a<=b){
System.out.print(a+"*"+b+"="+(a*b)+"\t");
a++;
}
System.out.println("\n");
//a从0自增,直至a等于b,本行输出完毕,跳出while循环,再输出换行符
//后开始for的下一次循环(每次b+1)
}
//for循环完毕时,表生成完成
}
}
程序运行结果为
思路:定义a为第一个数,b为第二个数。观察乘法表发现,第一行的a均从1开始,增加到等于b为止,故使用while(a<=b)作为判断条件,当a=b是停止while循环,输出换行符。表总共有9行,即b=1一直增加到b=9,使用for (int b = 1; b < 10; b++),再将while嵌套于for循环中。即while循环形成行,而for循环形成列,将while套于for中即可形成表。
增强for循环
重点用来循环数组和集合的
语法
for(声明语句 : 表达式)
{
//代码句
}
public class ForDemon5 {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50};//定义一个数组,名为numbers
for (int i = 0;i<5;i++){
System.out.println(numbers[i]);} //[] 括号中代表数组中的第几个数
System.out.println("=========================");
//遍历数组的元素 增强for循环↓
for (int x : numbers) {
System.out.println(x);
}
}
}
↑两种遍历数组的方法,得到的结果是一样的。先了解即可。
break
break用于强制退出该循环,不执行循环中剩余的语句。(循环都不干了)
public class BreakDemon1 {
public static void main(String[] args) {
int i = 1;
while (i < 100) {
System.out.println(i);
i++;
if (i == 30) {
break;//跳出该循环
}
}
}
}//数字只显示到29,没有到99就停止了
continue
用于终止某次循环,即跳过循环体中的尚未执行的语句,接着进行下一次是否执行循环的判断。(这次不干,下次还干)
public class Continue1 {
public static void main(String[] args) {
int i = 1;
while(i<100){i++;
if(i%5==0){System.out.println();
continue;}
//如果是5的倍数,跳过本次循环,即↓不执行,回到判断
System.out.println(i);}
}
} // 输出0到99,不输出5的倍数