# Java第三週[JPA104~106 函數工具運用]
#### 複習用
## 開始解題(JPA04~06):
### 指數函數:
#### 是Math類別:
`static double pow(double a, double b)`
Returns the value of the first argument raised to the power of the second argument.
所以,呼叫指數函數:
`Math.pow(2.0,3)` 是2的3次方,參數都是`double`,當輸入為`int`時會轉為`double`
### 第一題(JPA04)-兩距離計算[使用數學函數]:
題目所用到的[**直線距離數學公式**]
1. $\sqrt{(x1-x2)^2+(y1-y2)^2}$
2. $\sqrt{(x2-x1)^2+(y2-y1)^2}$
```java=1
double d=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
double d=Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));
```
* **注意!!! VB上可用^2(代表次方),但在C++、Java上無法使用**
* **必須用數學函數** `Math.pow(x1-x2,2)`**去做**
![](https://i.imgur.com/Q2E7qKV.png)
解答:
```java
import java.util.*;
public class JPA04
{
public static void main(String[] args)
{
Scanner key=new Scanner(System.in); //宣告鍵盤輸入
System.out.print("輸入第1組的x和y座標:");
double x1=key.nextDouble();
double y1=key.nextDouble();
System.out.print("輸入第2組的x和y座標:");
double x2=key.nextDouble();
double y2=key.nextDouble();
double d=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2)); //題目要求計算
System.out.printf("介於<%.2f,%.2f>和<%.2f,%.2f>之間的距離是%.2f",x1,y1,x2,y2,d); //輸出結果
}
}
```
* **%.2f**小數點後兩位數
#### 運用的數學函數(*工具箱的Math插件):
`Math.sqrt();`用於開根號 $\sqrt{x}$
`Math.pow(x,2);`用於開平方 ${x^2}$
若要3次方(${x^3}$),則寫成`Math.pow(x,3);`
---
### 第二題(JPA04_2延伸題)-三個值找最大[使用數學函數]:
Q:
{使用者輸入3個數,印出最大值}
限制條件: **並回傳兩者的最大值**
```java=1
double x=Math.max(a,b); //先用x接下a、b比較最大的值
double y=Math.max(x,c); //再用y接下x(a、b)、c比較最大的值
```
解答(Ans):
```java
import java.util.*;
public class JPA04_2
{
public static void main(String[] args)
{
Scanner key=new Scanner(System.in);
System.out.print("請輸入3個數值");
double a=nextDouble();
double b=nextDouble();
double c=nextDouble();
double x=Math.max(a,b);
double y=Math.max(x,c);
System.out.printf("三者中最大值為%f",y);
}
}
```
* 可用`int`,但當出現浮點數時,建議還是用`double`
`Math.max(x,y)`為兩數尋找**最大值**
---
### 第三題(JPA05)-存錢桶[使用整除與取餘數(Mod)]:
![](https://i.imgur.com/E3uL4Lf.png)
解答:
```java
import java.util.*;
public class JPA05
{
public static void main(String[] args)
{
Scanner key=new Scanner(System.in);
System.out.print("請輸入您的姓名:"); //分開運用(字串歸字串,數值歸數值)
String name=key.nextLine(); //設字串變數時,S要大寫
System.out.printf("Hi,%s,請輸入您的銅板的個數:\n",name);
System.out.print("請輸入1元的數量:");
int a=key.nextInt();
System.out.print("請輸入5元的數量:");
int b=key.nextInt();
System.out.print("請輸入10元的數量:");
int c=key.nextInt();
System.out.print("請輸入50元的數量:");
int d=key.nextInt();
int total=a*1+b*5+c*10+d*50; //2880,分別輸出
int e=total/1000; //結果要分開的值,所以運用整除跟mod //千
total%=1000; //讓千元清掉
int f=total/100; //百
total%=100; //讓百元清掉
int g=total/10; //十
total%=10; //餘數剩下0,所以不用另外計算 //讓十元清掉
System.out.printf("您的錢總共有:%d 千 %d 百 %d 十 %d 元",e,f,g,total);
}
}
```
---
### 第四題(JPA06)-數學函數計算[使用數學函數、副程式]:
題目所用到的[**運算數學公式**]
${3*(x^3)+2*x-1}$
```java
3*Math.pow(x,3)+2*x-1
```
**副程式**寫法:
```java
static double f(double x) //副程式(函數)的寫法
{
return 3*Math.pow(x,3)+2*x-1; //題給公式,回傳用return
}
```
* **注意!!! VB上可用^2(代表次方),但在C++、Java上無法使用**
* **必須用數學函數** `Math.pow(x,2)`**去做**
![](https://i.imgur.com/WrnCuHv.png)
解答:
```java
import java.util.*;
public class JPA06
{
public static void main(String[] args)
{
System.out.printf("f<-3.2> = %.4f\n",f(-3.2));//記得要f()
System.out.printf("f<-2.1> = %.4f\n",f(-2.1));//記得要f()
System.out.printf("f<0> = %.4f\n",f(0)); //記得要f()
System.out.printf("f<2.1> = %.4f\n",f(2.1)); //記得要f()
}
static double f(double x) //副程式(函數)的寫法
{
return 3*Math.pow(x,3)+2*x-1; //題給公式,回傳用return
}
}
```
---
最後編輯時間:2021/3/14 12:06pm.
###### tags: `JAVA課堂學習` `複習用` `高科大`