1.While循环语句格式
基本格式
While(判断条件语句){
循环体语句
}
扩展格式:
初始化语句:
While(判断条件语句){
循环体语句:
控制条件语句:
}
举例1:统计水仙花数(while语句):
import java.util.Scanner;
public class One {
public static void main(String[] args) {
int count=0;
int x=100;
while(x<1000) {
int ge=x%10;
int shi=x/10%10;
int bai=x/10/10%10;
if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
count++;
}
x++;
}
System.out.println("水仙花数共有"+count+"个");
}
}
小结:
(1)使用区别:如果在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环;
(2)因为变量(while)及早从内存消失,可以提高内存使用量;
(3)如果是一个范围的,用for循环非常明确;如果不明确,用while比较合适。
举例2。我国最高峰珠穆朗玛峰,8848M,现在有一张足够大的纸,厚度为0.01m,请问叠多少次,可以保证厚度不低于珠穆朗玛峰高度?
分析:
(1)定义一个统计变量,默认值是0;
(2)初始厚度0.01;
(3)8848是最终高度,折叠一次厚度是以前2倍;
import java.util.Scanner;
public class One {
public static void main(String[] args) {
int count=0;
int end=884800;
int start=1;
while(start<end) {
count++;
start*=2;
System.out.println(start);
}
System.out.println("要折叠"+count+"次");
}
}
2.Do ……while 循环
基本格式:
Do{
循环体语句:
}
While(判断条件语句)
扩展格式
初始化语;
Do{
循环体语句;
控制条件语句;
}while(判断条件语句)
循环语句的区别:
Do……while循环至少执行一次循环体
而for,while循环必须先判断条件是否成立,然后决定是否执行
举例3:请输出一个4行5列的*图案
外循环控制行数
内循环控制列数
import java.util.Scanner;
public class One {
public static void main(String[] args) {
for(int y=0;y<4;y++) {
for(int x=0;x<5;x++) {
System.out.print("*");
//我们可以通过空的输出语句实现换行:
//System.out.println();
}
System.out.println();
}
}
}
举例4:请输出一个直角三角形*图案.
import java.util.Scanner;
public class One {
public static void main(String[] args) {
for(int y=0;y<5;y++) {
for(int x=0;x<=y;x++) {
System.out.print("*");
}
System.out.println();//内循环结束换行
}
}
}
举例5:请输出九九乘法表。
import java.util.Scanner;
public class One {
public static void main(String[] args) {
for(int y=1;y<=9;y++) {
for(int x=1;x<=y;x++) {
System.out.print(y+"*"+x+"="+y*x+" ");
}
System.out.println();//内循环结束换行
}
}
}
3.控制跳转语句
Break:中断,跳出单层循环,跳出多层循环;
Continue:跳出一次循环,进入下一次执行;
Return:返回,它的作用不是结束循环,而是结束方法。
public static void main(String[] args) {
for(int y=0;y<=9;y++) {
if(y==2) {
System.out.println("退出 ");
// break;
//continue;
return;
}
System.out.println(y);//内循环结束换行
}
System.out.println("over");
}
}
举例6:小芳妈妈每天给他2.5元,他都会存起来,但是,每当这一天是村前的第五天或者5的倍数, 他都会花去六块钱,请问,经过多少天,小芳才可以存到100?
分析: (1)每天要存储的钱:double dayMoney=2.5;
(2)存钱初始化值:double daySum=0;
(3)第一天开始:int dayCount=1;
(4)最终结果100就不存了:double result=100;
(5)判断dayCount的值,如果对5整除就减去6元钱
daySum-=6
(7)如果不是5的倍数天的话,钱就要累加
daySum+=dayMoney
因为不知道多少天,所以用死循环,超过就退出。
import java.util.Scanner;
public class One {
public static void main(String[] args) {
double dayMoney=2.5;
double daySum=0;
int dayCount=1;
double result=100;
while(true) {
daySum+=dayMoney;
if(daySum>=result) {
System.out.println("共花了"+dayCount+"天存储了100元");
break;
}
if(dayCount%5==0) {
daySum-=6;
System.out.println("第"+dayCount+"天花了6元");
}
dayCount++;
}
}
}