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++;
}
}
}