Ch12 數字類別 JAVA程式設計入門(II)
大綱 Number數值類別 Math數學類別 型態包裝類別 將字串轉換成數值 將數值轉換成字串 計算亂數、最大和最小值 2018/11/29
Number數值類別 http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Number.html Java語言的Number數值類別是一個父類別,擁有多個數值子類別,其類別架構如下圖所示: 2018/11/29
型態包裝類別-說明 型態包裝類別(Type-Wrapper)類別簡單的說是一種Java基本資料型態的物件版,雖然Java語言已經提供基本資料型態,但是我們需要重複類別的原因,如下所示: 當程式需要使用物件時,可以使用型態包裝類別儲存資料。 型態類別物件提供常數和方法可以取得資料範圍和轉換成其它資料型態。 2018/11/29
型態包裝類別-Number類別的方法 Number類別建立的物件可以使用方法轉換成基本資料型態,或比較其值,如下表所示: 2018/11/29
型態包裝類別-Number類別的屬性1 Number類別的子類別Byte、Short、Integer、Long、Float和Double都提供最大值和最小值2個常數(屬性),如下表所示: 2018/11/29
型態包裝類別-Number類別的常數2 Float和Double類別還提供一些有用常數,如下表所示: 2018/11/29
範例1:Integer物件 class Ch03_01 { public static void main(String [] args) { Integer int1 = new Integer(123); Integer int2 = new Integer("456"); int int3 = int1.intValue(); System.out.println("int1 = " + int1); System.out.println("int2 = " + int2); System.out.println("int3 = " + int3); System.out.println("max value of int1 : " + int1.MAX_VALUE); System.out.println("max value of Integer : " + Integer.MAX_VALUE); // System.out.println("max value of int3 : " + int3.MAX_VALUE); } 2018/11/29
將字串轉換成數值 在Java程式如果需要將字串轉換成數值的基本資料型態,其相關方法如下表所示: 2018/11/29
範例2:輸入兩個值作相加 class Ch03_02 { public static void main(String [] args) { int i; int [] int1 = new int[2]; for(i=0; i<args.length; i++) int1[i] = Integer.parseInt(args[i]); System.out.print(" " + int1[i] + " , "); } int sum = 0; for(i = 0; i<int1.length; i++) sum += int1[i]; System.out.println("的和 = " + sum); 2018/11/29
手、腦動一動(1) 修改範例2的程式,使得我們可以輸入任意多個數值字串,並求其總和 2018/11/29
將數值轉換成字串 在Java程式也可以將數值轉換成字串,其相關方法如下表所示: 2018/11/29
Math數學類別 http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html Java API的Math類別提供數學常數和各種數學函數的類別方法,在Java程式提供亂數、計算最大值、最小值、三角和指數等數學函數,因為是類別方法,在呼叫方法時需要指明類別Math。 2018/11/29
Math類別的數學常數和方法-常數 Math類別提供2個常用的數學常數(為近似值),其說明如下表所示: 2018/11/29
計算亂數、最大和最小值 Math類別提供方法計算亂數、最大值和最小值,相關方法說明,如下表所示: 2018/11/29
範例3:亂數洗牌(隨機位置對調) class Ch03_03 { public static void main(String [] args) { String [] pattern = {"桃", "心", "磚", "梅"}; String [] size = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; String [] cards = new String[52]; //作撲克牌, 並放在一個陣列cards中 for(int i = 0; i < pattern.length; i++) for(int j = 0; j < size.length; j++) cards[i*size.length + j] = pattern[i] + size[j]; //亂數排列 for(int i = 0; i < cards.length; i++) { int newLoc = (int) (Math.random() * cards.length); String temp = cards[i]; cards[i] = cards[newLoc]; cards[newLoc] = temp; } //牌面輸出 for(int i = 0; i<cards.length; i++) { System.out.print(cards[i] + " "); if((i+1) % 13 == 0) System.out.println(); 2018/11/29
Math類別的數學常數和方法-方法1 Math類別還提供三角函數(Trigonometic)、指數(Exponential)和對數(Logarithmic)的方法,其相關方法說明,如下表所示: 2018/11/29
Math類別的數學常數和方法-方法2 2018/11/29
範例4:利用sin和cos畫圓(1) class Ch03_04 { public static void main(String [] args) { //設定圓的中心點及半徑 int cx=20, cy=12, r=12; MyCanvas mc = new MyCanvas(); for(double d = 0; d < 2 * Math.PI; d += Math.PI/36) int x = cx + (int)Math.round(r*Math.sin(d)); int y = cy + (int)Math.round(r*Math.cos(d)); mc.drawDot(x, y); } mc.showCanvas(); 2018/11/29
範例4:利用sin和cos畫圓(2) class MyCanvas { private boolean [][] canvas = new boolean[25][39]; public void drawDot(int x, int y) { if(y < canvas.length && x < canvas[0].length) canvas[y][x] = true; } public void showCanvas() { for(int i = 0; i <canvas.length; i++) { for(int j = 0; j < canvas[0].length; j++) { if(canvas[i][j]) System.out.print('■'); else System.out.print('□'); System.out.println(); 2018/11/29
範例4:利用sin和cos畫圓(3) 2018/11/29
手、腦動一動(2) 輸入三角形的三個邊長 判斷這三個邊長可不可以形成三角形 判斷此三角形是不是直角三角形 2018/11/29
手、腦動一動(3) 修改範例4,輸出sin(x)圖形如下,振幅10,波長18 2018/11/29