# 循環語句
# 已知次數 for
 | for(表達式1; 表達式2; 表達式3)  | 
 | { | 
 | 	語句序列;  | 
 | }  | 
 |  | 
 |  | 
 |  | 
 | graph LR  | 
 |   A[表達式1]-->B{表達式2?} | 
 |   B-->|不成立|C[ ]  | 
 |   B-->|成立|D[語句序列]  | 
 |   D-->E[表達式3]  | 
 |   E-->B  | 
# 例子:計算累加和
例子在裡面喔
計算1+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);   | 
 |             }  | 
 |             System.out.println(""); | 
 |         }  | 
 |       | 
 | 	}  | 
 | }  | 
- 表達式之間的 
; 是不能省略的 for(;;) 在語法上是正確的,表示無限循環- 跟 
if 一樣如果 for 只有執行一個指令 {} 是可以省略的 
# 已知條件 while do while
 | graph LR  | 
 |   B{表達式?}-->|不成立|C[ ] | 
 |   B-->|成立|D[語句序列]  | 
 |   D-->B  | 
 | graph LR  | 
 |   A[語句序列]-->B  | 
 |   B{表達式?}-->|不成立|C[ ] | 
 |   B-->|成立|D[語句序列]  | 
 |   D-->B  | 
# 例子:求 e 值
例子在裡面喔!!
使用下列級數近似計算 e 值,直到最後一個通項 ui<10-7 為止
e=1+1!1+2!1+...+n!1+...
ui=i!1=(i−1)!1/i=ui−1/i
 | public class App { | 
 |     public static void main(String[] args) { | 
 |  | 
 |         double e = 1.0,u = 1.0;   | 
 | 	    int n = 1;   | 
 |           | 
 | 	    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 的方法,解析並轉換成我們需要的資料型態,然後回傳。
這些就是使用方式及回傳型態:
| 回傳型態 | 方法 | 描述 | 
|---|
| String | next() | 找下一個 token 並回傳。 | 
| BigDecimal | nextBigDecimal() | 找下一個 token 並轉換成 BigDecimal 回傳。 | 
| BigInteger | nextBigInteger() | 找下一個 token 並轉換成 BigInteger 回傳。 | 
| boolean | nextBoolean() | 找下一個 token 並轉換成 boolean 回傳。 | 
| byte | nextByte() | 找下一個 token 並轉換成 byte 回傳。 | 
| double | nextDouble() | 找下一個 token 並轉換成 double 回傳。 | 
| float | nextFloat() | 找下一個 token 並轉換成 float 回傳。 | 
| int | nextInt() | 找下一個 token 並轉換成 int 回傳。 | 
| long | nextLong() | 找下一個 token 並轉換成 long 回傳。 | 
| short | nextShort() | 找下一個 token 並轉換成 short 回傳。 | 
| String | nextLine() | 讀一整行的字串回傳。(包含空白,讀到換行為止) | 
 | 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 當然也可以透過方法做到。
hasNext () 系列方法,回傳 boolean,表示接下來還有沒有東西:
| 回傳值 | 方法 | 描述 | 
|---|
| boolean | hasNext() | 如果還有 token 可以讀回傳 true。 | 
| boolean | hasNextBigDecimal() | 如果下個 token 可以被解析成 BigDecimal 回傳 true。 | 
| boolean | hasNextBigInteger() | 如果下個 token 可以被解析成 BigInteger 回傳 true。 | 
| boolean | hasNextBoolean() | 如果下個 token 可以被解析成 boolean 回傳 true。 | 
| boolean | hasNextByte() | 如果下個 token 可以被解析成 byte 回傳 true。 | 
| boolean | hasNextDouble() | 如果下個 token 可以被解析成 double 回傳 true。 | 
| boolean | hasNextFloat() | 如果下個 token 可以被解析成 float 回傳 true。 | 
| boolean | hasNextInt() | 如果下個 token 可以被解析成 int 回傳 true。 | 
| boolean | hasNextLong() | 如果下個 token 可以被解析成 long 回傳 true。 | 
| boolean | hasNextShort() | 如果下個 token 可以被解析成 short 回傳 true。 | 
| boolean | hasNextLine() | 如果還有下一行回傳 true。 | 
 | Scanner in = new Scanner(System.in);  | 
 | while(in.hasNext()){ | 
 |     System.out.println(in.next());  | 
 | }  | 
 | s.close();  |