DAY11 水仙花數案例 while循環,do-while循環


一.求和思想:

今后遇到的需求中,如果帶有求和二字,請立即聯想到求和變量
求和變量的定義位置,必須在循環外部,如果在循環內部則計算出的數據將是錯誤的

二.打印水仙花數:

需求:在控制台輸出所有的“水仙花數”
解釋:什么是水仙花數?
水仙花數,指的是一個三位數,個位、十位、百位的數字立方和等於原數
例如 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(條件判斷語句);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM