一.求和思想:
今后遇到的需求中,如果帶有求和二字,請立即聯想到求和變量
求和變量的定義位置,必須在循環外部,如果在循環內部則計算出的數據將是錯誤的
二.打印水仙花數:
需求:在控制台輸出所有的“水仙花數”
解釋:什么是水仙花數?
水仙花數,指的是一個三位數,個位、十位、百位的數字立方和等於原數
例如 153 3*3*3 + 5*5*5 + 1*1*1 = 153
思路:
1. 獲取所有的三位數,准備進行篩選,最小的三位數為100,最大的三位數為999,使用for循環獲取
2. 獲取每一個三位數的個位,十位,百位,做if語句判斷是否是水仙花數
示例代碼
public class ForTest04 { public static void main(String[] args) { //輸出所有的水仙花數必然要使用到循環,遍歷所有的三位數,三位數從100開始,到999結束 for(int i=100; i<1000; i++) { //在計算之前獲取三位數中每個位上的值 int ge = i%10; int shi = i/10%10; int bai = i/10/10%10; //判定條件是將三位數中的每個數值取出來,計算立方和后與原始數字比較是否相等 if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { //輸出滿足條件的數字就是水仙花數 System.out.println(i); } } } }
三.統計思想:每行打印2個水仙花數:
需求:在控制台輸出所有的“水仙花數”,要求每行打印2個
示例代碼:
public class Demo6For { /* 需求:在控制台輸出所有的“水仙花數”,要求每行打印2個 System.out.print (打印內容); 打印后不換行 System.out.println(打印內容); 打印后換行 分析: 1. 定義變量count,用於保存“打印過”的數量,初始值為0 2. 在判定和打印水仙花數的過程中,拼接空格, 但不換行,並在打印后讓count變量+1,記錄打印 過的數量 3.每次count值達到2的倍數對應地就是打印了兩個水仙花數,需要換行。 */ public static void main(String[] args){ // 1. 定義變量count,用於保存“打印過”的數量,初始值為0 int count = 0; for(int i = 100; i <= 999; i++){ int ge = i % 10; int shi = i / 10 % 10; int bai = i / 10 / 10 % 10; if( (ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){ // 2. 在判定和打印水仙花數的過程中,拼接空格, 但不換行,並在打印后讓count變量+1,記錄打印過的數量 System.out.print(i + " "); count++; // 3. 在每一次count變量+1后,判斷是否到達了2的倍數,是的話,換行 if(count % 2 == 0){ System.out.println(); } } } } }
本題要點:
今后如果需求帶有統計xxx,請先想到計數器變量
計數器變量定義的位置,必須在循環外部
四.while循環:
while循環完整格式:
初始化語句; while (條件判斷語句) { 循環體語句; 條件控制語句; }
while循環案例-珠穆朗瑪峰
需求:世界最高山峰是珠穆朗瑪峰(8844.43米=8844430毫米),假如我有一張足夠大的紙,它的厚度是0.1毫
米。請問,我折疊多少次,可以折成珠穆朗瑪峰的高度?
注:若循環需求不明確循環次數,則推薦使用while,若明確循環次數,推薦使用for循環
示例代碼:
public class WhileTest { public static void main(String[] args) { //定義一個計數器,初始值為0 int count = 0; //定義紙張厚度 double paper = 0.1; 定義珠穆朗瑪峰的高度
int zf = 8844430;
//因為要反復折疊,所以要使用循環,但是不知道折疊多少次,這種情況下更適合使用while循環
//折疊的過程中當紙張厚度大於珠峰就停止了,因此繼續執行的要求是紙張厚度小於珠峰高度
while(paper <zf) {
//循環的執行過程中每次紙張折疊,紙張的厚度要加倍
paper *= 2;
//在循環中執行累加,對應折疊了多少次
count++;
}
//打印計數器的值
System.out.println("需要折疊:" + count + "次");
}
}
五.循環語句-dowhile循環:
完整格式:
初始化語句; do { 循環體語句; 條件控制語句; }while(條件判斷語句);