java 02 練習For_For

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。All Rights Reserved

目錄(?)[+]
1) 水仙花數

水仙花數是指一個 n 位正整數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153)
這裏列舉了三位數的情況:

for(int i=100; i<1000; i++){
    int baiwei = i / 100;
    int shiwei = (i - baiwei * 100) / 10;
    int gewei = i % 10;

    if(i == (baiwei * baiwei * baiwei)+(shiwei * shiwei * shiwei)+(gewei * gewei * gewei))  {
        System.out.println(i);
    }
}

水仙花數-執行結果
水仙花數-執行結果
2) 輸出100以內所有奇數的和

int sum=0;
for(int i=1; i<=100; i+=2){
    sum+=i;
}
System.out.println(sum);

100以內所有奇數的和-執行結果
100以內所有奇數的和-執行結果
3) 1~100之間所有是7的倍數的整數

int sum=0;
int count=0;
for(int i=1; i<=100; i++){
    if(i % 7 == 0){
        // System.out.println(i);  打印1~100之間所有是7的倍數的整數
        sum += i;
        count += 1;
    }
}
System.out.println("1~100之間所有是7的倍數的整數的個數爲:" + count);
System.out.println("總和爲:" + sum);

1~100之間所有是7的倍數的整數-執行結果
1~100之間所有是7的倍數的整數-執行結果
4) 求最小公倍數和最大公約數

int m = 1;
int n = 28;

int max = (m > n) ? m : n;
int min = (m > n) ? n : m;

for (int i = max; i <= m * n; i++) {
    if (i % m == 0 && i % n == 0) {
        System.out.println("最小公倍數:" + i);
        break;
    }
}

for (int i = min; i >= 1; i--) {
    if (m % i == 0 && n % i == 0) {
        System.out.println("最大公約數:" + i);
        break;
    }
}

5) 九九乘法表

for (int i = 1; i <= 9; i++) {
    for (int j = 1; j < 1 + i; j++) {
        String result;
        if ((j * i) < 10) {
            result = "0" + (j * i);
        } else {
            result = "" + (j * i);
        }
        System.out.print(j + "*" + i + "=" + result + " ");
    }
    System.out.println();
}

九九乘法表-執行結果
九九乘法表-執行結果
6) 圖形打印
(1) 例子1

for (int i = 0; i < 4; i++) { // 控制行數
    for (int j = 0; j < 5; j++) { // 控制列數
        System.out.print("*"); // 注意 : 此處是print()不是println()
    }
    System.out.println();
}

打印圖形:例子1-執行結果
打印圖形:例子1-執行結果
(2) 例子2

for (int i = 0; i < 5; i++) {
    for (int j = -1; j < i; j++) { // j的初始化值要比i的初始化值小1
        System.out.print("*");
    }
    System.out.println();
}

打印圖形:例子2-執行結果
打印圖形:例子2-執行結果
(3) 例子3

for (int i = 0; i < 5; i++) {
    for (int j = 5; j > i; j--) {
        System.out.print("*");
    }
    System.out.println();
}

打印圖形:例子3-執行結果
打印圖形:例子3-執行結果
(4) 例子4

for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 4 - i; j++) { // 控制每列需要打印的空格
        System.out.print(" ");
    }
    for (int j = 0; j < i + 1; j++) { // j的初始化值和i的初始化值一樣,則需要在循環條件處加1
        System.out.print(" *");
    }
    System.out.println();
}

打印圖形:例子4-執行結果
打印圖形:例子4-執行結果
(5) 例子5

當知道原理時,你就可以疊加使用。

for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 4 - i; j++) {
        System.out.print(" ");
    }
    for (int j = 0; j < i + 1; j++) {
        System.out.print(" *");
    }
    System.out.println();
}
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < i + 1; j++) {
        System.out.print(" ");
    }
    for (int j = 0; j < 4 - i; j++) {
        System.out.print(" *");
    }
    System.out.println();
}

打印圖形:例子5-執行結果
打印圖形:例子5-執行結果
7) 取100內的質數【節約時間和資源的思想】

int count = 0;

boolean flag = false;

long b=System.currentTimeMillis();
for (int i = 2; i <= 100; i++) {
    for (int j = 2; j <= Math.sqrt(i); j++) { // 開根號i,極大地縮短了時間
        if (i % j == 0) {
            flag = true;
            break; // 提前退出循環,節約時間
        }
    }
    if (!flag) {
        count += 1;
        System.out.println(i);
    }
    flag = false;
}
System.out.println("共" + count + "個質數");
long e=System.currentTimeMillis();
System.out.println((double)(e-b) / 1000 + "秒");

取100內的質數【節約時間和資源的思想】-執行結果
取100內的質數【節約時間和資源的思想】-執行結果
嵌套for循環 tips

注意:循環嵌套,裏層的for循環一旦循環完畢就會初始化變量。
[打印圖形] 三角形 : for ( ; (1+i); )   倒三角形 : for ( ; (層數-i); )
[打印圖形] 不要幾層(從第一層開始): i從幾層開始計數。
發佈了25 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章