# 循環語句

# 已知次數 for

for(表達式1; 表達式2; 表達式3)
{
	語句序列;
}
// 表達式 1:< 資料型態 > < 變數 >=< 初值 >
// 表達式 2:表示循環條件
// 表達式 3:表示增量 (減量)
graph LR
  A[表達式1]-->B{表達式2?}
  B-->|不成立|C[ ]
  B-->|成立|D[語句序列]
  D-->E[表達式3]
  E-->B

# 例子:計算累加和

例子在裡面喔

計算1+2+3+...+n1+2+3+...+n 的總和並顯示結果。

public class App {
    public static void main(String[] args) {
        int sum=0;
        for(int i=1; i<=100; i++)
            sum += i;
        System.out.println(sum);
    }
}

# 例子:乘法表 (巢狀迴圈)

例子在裡面喔

按照三角形式顯示九九乘法表
格式如下:

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
......
1*9=9 2*9=18 3*9=27 ... 9*9=81
public class App {
    public static void main(String[] args) {
        for(int i=1; i<=9; i++){ // 外層循環 
            for(int j=1; j<=i; j++){ // 內層循環
                String ouput = j + "*"+i+"="+(j*i)+"\t";
                System.out.print(ouput); // \t 輸出對齊
            }
            System.out.println("");
        }
    
	}
}
  1. 表達式之間的 ; 是不能省略的
  2. for(;;) 在語法上是正確的,表示無限循環
  3. if 一樣如果 for 只有執行一個指令 {} 是可以省略的

# 已知條件 while do while

while (表達式)
{
	語句序列
}
graph LR
  B{表達式?}-->|不成立|C[ ]
  B-->|成立|D[語句序列]
  D-->B
do
{
	語句序列
} while (表達式);
graph LR
  A[語句序列]-->B
  B{表達式?}-->|不成立|C[ ]
  B-->|成立|D[語句序列]
  D-->B

# 例子:求 e 值

例子在裡面喔!!

使用下列級數近似計算 e 值,直到最後一個通項 ui<10-7 為止

e=1+11!+12!+...+1n!+...e = 1 + \frac{1}{1!} + \frac{1}{2!} + ... + \frac{1}{n!} + ...

ui=1i!=1(i1)!/i=ui1/iu_i = \frac{1}{i!} = \frac{1}{(i - 1)!}/i = u_{i-1} / i

public class App {
    public static void main(String[] args) {
        double e = 1.0,u = 1.0; // 基數 e,通項 u
	    int n = 1; // 第 n 項
        
	    while(u >= 1.0E-7) {
		    u = u/n; // 通項
		    e = e+u; // 累加和
		    n++;
	    }
        String output = "e = " + e + "(n = " + n + ")";
        System.out.println(output);
	}
}
public class App {
    public static void main(String[] args) {
        double e=1.0,u = 1.0;
	    int n= 1;
	    do { 
            u = u/n;
            e = e+u;
            n = n+1;
        } while (u>=1.0E-7);
        String output = "e = " + e + "(n = " + n + ")";
        System.out.println(output);
	}
}

# 標準輸入 Scanner

Scanner 是一個簡單的文字讀取器,可以解析字串成各個基本資料型態。
這個 Scanner 類別被放在 java.util 套件中,別忘了事先 import:

import java.util.Scanner;

System 物件裡面的靜態欄位 in 可以取得標準輸入流。我們可以用它來初始化 Scanner 物件:

Scanner in = new Scanner(System.in);

# 使用

Scanner 可以把一整行的字串切成很多的 token,預設是以空白 (或 tab) 為基礎隔開,
透過各種 next 的方法,解析並轉換成我們需要的資料型態,然後回傳。
這些就是使用方式及回傳型態:

回傳型態方法描述
Stringnext()找下一個 token 並回傳。
BigDecimalnextBigDecimal()找下一個 token 並轉換成 BigDecimal 回傳。
BigIntegernextBigInteger()找下一個 token 並轉換成 BigInteger 回傳。
booleannextBoolean()找下一個 token 並轉換成 boolean 回傳。
bytenextByte()找下一個 token 並轉換成 byte 回傳。
doublenextDouble()找下一個 token 並轉換成 double 回傳。
floatnextFloat()找下一個 token 並轉換成 float 回傳。
intnextInt()找下一個 token 並轉換成 int 回傳。
longnextLong()找下一個 token 並轉換成 long 回傳。
shortnextShort()找下一個 token 並轉換成 short 回傳。
StringnextLine()讀一整行的字串回傳。(包含空白,讀到換行為止)
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        System.out.println("我是Zrn,我想知道你的名字!");
        String name = s.next();
        System.out.println(name+",很高興認識你ヾ(•ω•`)o");
        System.out.println("輸入個數字吧~~");
        int number =s.nextInt();
        System.out.println("你輸入的數字乘以10為: "+number);
        System.out.println("我是不是很厲害啊!!!");
        s.close();    // 程式結束前關閉 Scanner 物件是好習慣。
    }//end of main(String[])
}//end of class Main

# 讀完資料

很多時候我們會希望程式可以一直讀,讀到檔案結束或輸入結束,Scanner 當然也可以透過方法做到。

hasNext () 系列方法,回傳 boolean,表示接下來還有沒有東西:

回傳值方法描述
booleanhasNext()如果還有 token 可以讀回傳 true。
booleanhasNextBigDecimal()如果下個 token 可以被解析成 BigDecimal 回傳 true。
booleanhasNextBigInteger()如果下個 token 可以被解析成 BigInteger 回傳 true。
booleanhasNextBoolean()如果下個 token 可以被解析成 boolean 回傳 true。
booleanhasNextByte()如果下個 token 可以被解析成 byte 回傳 true。
booleanhasNextDouble()如果下個 token 可以被解析成 double 回傳 true。
booleanhasNextFloat()如果下個 token 可以被解析成 float 回傳 true。
booleanhasNextInt()如果下個 token 可以被解析成 int 回傳 true。
booleanhasNextLong()如果下個 token 可以被解析成 long 回傳 true。
booleanhasNextShort()如果下個 token 可以被解析成 short 回傳 true。
booleanhasNextLine()如果還有下一行回傳 true。
Scanner in = new Scanner(System.in);
while(in.hasNext()){
    System.out.println(in.next());
}
s.close();
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay