# 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課堂學習` `複習用` `高科大`