# 2019-11-11 上課範例
## PT4_2.java
```java=
import java.util.Scanner;
public class PT4_2 {
// ================
// 使用者的角色
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入一個整數n:");
int n = in.nextInt();
in.close();
for (int i = 1; i <= n; i++) {
drawStarts(i);
}
}
// ===========================================
// 開發者的角色
public static void drawStarts(int n) {
for (int i = 0; i < n; i++) {
System.out.print("*");
}
System.out.println();
}
}
```
## PT4_3.java
```java=
import java.util.Scanner;
public class PT4_3 {
// =======
// 使用者角色
public static void main(String[] args) {
// step 1.
Scanner in = new Scanner(System.in);
System.out.println("請輸入三個整數a b c:");
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
in.close();
// step 2.
int max = max3(a, b, c);
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("c=" + c);
// step 3.
System.out.println("max=" + max);
}
// ====================
// 開發者角色
public static int max3(int x, int y, int z) {
return PT4_1.max2(PT4_1.max2(x, y), z);
}
}
```
## MyMath.java
```java=
/**
* 處理數學相關的類別
*
* @author kChen
* @version 0.01
* @since 2019/11/11
*
*/
public class MyMath {
/**
* 輸入兩個整數找最大的整數
*
* @param x 一個int
* @param y 一個int
* @return x和y 最大的
*/
public static int max(int x, int y) {
return (x >= y) ? x : y;
}
public static int max(int x, int y, int z) {
return max(max(x, y), z);
}
public static int add(int x, int y) {
return x + y;
}
public static int add(int x, int y, int z) {
return add(add(x, y), z);
}
}
```
## PT4_5.java
費氏數列遞迴版
```java=
import java.util.Scanner;
public class PT4_5 {
// =========
// 使用者
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入一個整數n:");
int n = in.nextInt();
in.close();
// 取得目前系統的時間,單位:豪秒
long start_time = System.currentTimeMillis();
//求 Fn
int Fn = F(n);
long end_time = System.currentTimeMillis();
System.out.println("Fn=" + Fn);
// end_time – start_time 就是執行的時間
System.out.println("遞迴版執行時間:" + (end_time - start_time));
}
// ========
// 開發者
// 費氏數列遞迴版
public static int F(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
return F(n - 1) + F(n - 2);
}
}
```
## PT4_5a.java
費氏數列迴圈版
```java=
import java.util.Scanner;
public class PT4_5a {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入一個整數n:");
int n = in.nextInt();
in.close();
// 取得目前系統的時間,單位:豪秒
long start_time = System.currentTimeMillis();
// 執行的程式碼
int Fn = F(n);
long end_time = System.currentTimeMillis();
System.out.println("Fn=" + Fn);
// end_time – start_time 就是執行的時間
System.out.println("迴圈版執行時間:" + (end_time - start_time));
}
// ========
// 開發者
// 費氏數列迴圈版
public static int F(int n) {
int Fn_2 = 0;
int Fn_1 = 1;
int Fn = 0;
if (n == 0 || n == 1)
return n;
else {
for (int i = 2; i <= n; i++) {
Fn = Fn_1 + Fn_2;
Fn_2 = Fn_1;
Fn_1 = Fn;
}
return Fn;
}
}
}
```
###### tags: `Java計算機程式設計` `108-1`