Try   HackMD

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. (x1x2)2+(y1y2)2
  2. (x2x1)2+(y2y1)2
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)去做


解答:

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();用於開根號

x
Math.pow(x,2);用於開平方
x2

若要3次方(
x3
),則寫成Math.pow(x,3);


第二題(JPA04_2延伸題)-三個值找最大[使用數學函數]:

Q:
{使用者輸入3個數,印出最大值}
限制條件: 並回傳兩者的最大值

double x=Math.max(a,b); //先用x接下a、b比較最大的值 double y=Math.max(x,c); //再用y接下x(a、b)、c比較最大的值

解答(Ans):

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)]:

解答:

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(x3)+2x1

3*Math.pow(x,3)+2*x-1

副程式寫法:

static double f(double x)    //副程式(函數)的寫法
{	
    return 3*Math.pow(x,3)+2*x-1;	//題給公式,回傳用return
}
  • 注意!!! VB上可用^2(代表次方),但在C++、Java上無法使用
  • 必須用數學函數 Math.pow(x,2)去做

解答:

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