# Java第四週[JPA109、107、107_2、110 函數、副程式的運用、物件導向]
#### 複習用
## 開始解題(JPA09、7、7_2、10):
### 第一題(JPA09)-變數範圍[函數、副程式的運用]:
#### 函數寫法(副程式)
```java=1
public static int fun() //int 有回傳值(要寫return)
public static void test() //void 無回傳值
```

JPD0範本:
```java
public class JPD01
{
public static int adder (__________________)
{
return _______________;
}
public static int gameRating (int s, int a, int e)
{
return adder(__________________);
}
public static void main (String argv[])
{
int skill = 6, action = 9, excitment = 8, result;
result = gameRating(skill, action, excitment);
System.out.print("The rating of the game is ");
System.out.println(result);
}
}
```
解答:
```java
public class JPA09
{
public static int adder (int skill,int action,int excitement) //解
{
return skill+action+excitement; //解
}
public static int gameRating (int s, int a, int e)
{
return adder(s,a,e); //解
}
public static void main (String argv[])
{
int skill = 6, action = 9, excitment = 8, result;
result = gameRating(skill, action, excitment);
System.out.print("The rating of the game is ");
System.out.println(result);
}
}
```
---
### 第二題(JPA07)-運動成績[物件導向]:
#### 函數寫法(副程式)
```java=1
public static int fun() //int 有回傳值(要寫return)
public static void test() //void 無回傳值
```
#### 物件導向
[參考資料1](http://kaiching.org/pydoing/java-guide/unit-12-static.html)
[參考資料2](http://in.ncu.edu.tw/w3meng/train96/mengtrain96/lecture/TextBook_JAVAProgram.pdf)
#### class用法
記得class要在外面宣告,而非放在JPA07的class裡

JPD0範本:
```java
public class JPD01
{
public static void main(String argv[])
{
int action = 1, skill = 2, teamgame = 3;
System.out.println("The basketball grade is " + Basketball.calGrade(_____________________));
System.out.println("The baseball grade is " + _______________(________________________));
}
}
class Basketball
{
......
{
return a + s + t;
}
}
class Baseball
{
......
{
return 10 + s + t;
}
}
```
解答:
```java
public class JPA07 //JPA07 class類別
{
public static void main(String argv[])
{
int action = 1, skill = 2, teamgame = 3;
System.out.println("The basketball grade is " + Basketball.calGrade(action,skill,teamgame));
System.out.println("The baseball grade is " + Baseball.calGrade(skill,teamgame));
}
}
class Basketball //建立Basketball類別 //建立類別,並宣告型態
{
static int calGrade(int a,int s,int t) //設函數
{
return a + s + t;
}
}
class Baseball //建立Baseball類別
{
static int calGrade(int s,int t) //設函數
{
return 10 + s + t;
}
}
```
---
### 第三題(JPA07_2)-運動成績[物件導向的運用]:
#### 若要輸出abc的結果?要如何更改程式

解答:
```java
public class JPA072
{
public static void main(String argv[])
{
int action = 1, skill = 2, teamgame = 3;
System.out.println("The basketball grade is " + Basketball.calGrade(action,skill,teamgame));
Basketball.abc=3; //主程式設abc=3
System.out.println(Basketball.abc); //輸出abc=3
System.out.println("The baseball grade is " + Baseball.calGrade(skill,teamgame));
System.out.println(Basketball.abc);//再次輸出abc的結果
}
}
class Basketball
{
static int abc; //在籃球類別中宣告一個整數abc
static int calGrade(int a,int s,int t)
{
return a + s + t;
}
}
class Baseball
{
static int calGrade(int s,int t)
{
Basketball.abc=7; //在baseball類別中的副程式設abc=7
return 10 + s + t;
}
}
```
---
### 第四題(JPA010)-圖形面積[函數(副程式)運用]:
#### 函數寫法(副程式)
```java=1
public static int fun() //int 有回傳值(要寫return)
public static void test() //void 無回傳值
```
#### 面積公式
1. 圓形 [ $r^2*pi$ ] (pi=3.1415926)
2. 三角形 [ 底*高/2.0 ]
3. 方形 [ 長*寬 ]
4. 梯形 [ (上底+下底)*高/2.0 ]
* 總面積相加即可
* double 要記得/2.0


JPD0範本:
```java
import java.util.Scanner;
public class JPD01
{
public static void main(String args[])
{
double totalarea;
System.out.printf("圓形面積為:%f \n",calCircle(5));
System.out.printf("三角形面積為:%f \n",________________);
System.out.printf("方形面積為:%f \n",_______________);
totalarea = __________________________________________;
System.out.printf("此圖形面積為:%f \n",totalarea);
}
_______ ______ calCircle(_____)
{
}
______ ____ calTriangle(_____________)
{
}
______ ____ calRectangle(______________)
{
}
}
```
解答:
```java
import java.util.Scanner;
public class JPA10
{
public static void main(String args[])
{
double totalarea; //圖形 總面積
System.out.printf("圓形面積為:%f \n",calCircle(5));
System.out.printf("三角形面積為:%f \n",calTriangle(10,5));
System.out.printf("方形面積為:%f \n",calRectangle(5,10));
totalarea = calCircle(5)+calTriangle(10,5)+calRectangle(5,10);
System.out.printf("此圖形面積為:%f \n",totalarea);
//老師額外出題
System.out.printf("梯形面積為:%f \n",calTrapezoid(5,10,4));
}
static double calCircle(int r) //圓形
{ final double pi=3.1415926;
return Math.pow(r,2)*pi;
}
static double calTriangle(int u,int h) //三角形
{
return u*h/2.0;
}
static double calRectangle(int m,int n) //方形
{
return (double)m*n; //前面加(double),可以強制切換型態
}
static double calTrapezoid(int u1,int u2,int h) //額外出題-梯形
{
return (u1+u2)*h/2.0;
}
}
```
---
最後編輯時間:2021/4/7 11:16pm.
###### tags: `JAVA課堂學習` `複習用` `高科大`