函式,只能創建在類別(class)下方,且一個類別裡,main函式只可以有一個。用來將重複、同樣的功能,定義一起。
各個函式中宣告的變數,創建的記憶體空間不同,因此變數名稱可以重複
但陣列在stack中儲存的是heap中陣列的位置,因此各個函式中若指定相同的陣列,值是會共通的
以下是製作一個交換陣列位置數值的function
public class MainClass { public static void main(String[] args) { int a[] = new int[5]; for(int i = 0; i< a.length ;i++){ a[i] = i+1; } // for(int i = 0; i<5 ;i++){ // a[i] = i+1; // System.out.print(a[i] + " "); // } // System.out.println(); // swap(a,0,1); for(int i = 0; i< a.length ;i++){ System.out.print(a[i] + " "); } } public static void swap( int arr[], int a, int b ){ int tmp = arr[a]; arr[a] = arr[b]; arr[b] = tmp; } }
以及讓使用者計算次方的功能
import java.util.Scanner; public class MainClass { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入底數:"); int input1 = sc.nextInt(); System.out.println("請輸入幾次方:"); int input2 = sc.nextInt(); double ans = square(input1,input2); System.out.println("結果:" + ans); } //方式1 public static double square(int x, int y){ double tmp = 1; //次方為0時,結果為1 for(int i = 1; i<=Math.abs(y); i++){ tmp *= x; } if(y<0){ //當次方為負時 tmp=1/tmp; } return tmp; } //方式2 public static int pow(int x, int y){ int tmp = x; for(int i = 0; i<y-1; i++){ tmp *= x; } return tmp; } }
方式一是我自己想的,其實跟老師教得一樣,只差在最一開始的變數tmp,我設的初始值是1,老師是x
老師的方法在迴圈第一圈就完成了x的相乘,所以 i<y-1,要少一輪。
為了讓正負次方都能正常顯示,我有做了一些修改,可以在0次方的時候,顯示結果為1,次方為負數的時候,也能得出答案。可是分數次方...,有時間我再來想一下好了!
但太大的次方,就會變成亂數,我覺得是位數不夠,目前正在等待解答.... =>果然是位數不夠,int 的最大值是2147483647,也就是2的32次方-1,超過會overflow變為負數
骰子遊戲:
遊戲規則
– 擲出兩個骰子,檢視點數的總和
• 如果第一次丟出總點數為7或11的話,代表獲勝
• 如果第一次丟出的點數為2、3或12,就代表輸了
• 第一次丟出4、5、6、8、9或10,就須繼續丟骰子
– 如需進行第二次
• 丟出的點數須等於之前的數值,才能贏得勝利。
• 中途丟出7,代表輸了
• 其他點數,繼續丟骰子。
import java.util.Scanner; public class MainClass { public static void main(String[] args) { int sum = rollDice_sum(); switch (sum) { case 7: case 11: System.out.println( "win!"); break; case 2: case 3: case 12: System.out.println( "lose..."); break; default: while (true) { int i = rollDice_sum(); if (i == sum) { System.out.println("win!"); break; } else if (i == 7) { System.out.println("lose..."); break; } sum = i; } } } public static int rollDice_sum() { int dice1 = 1 + (int) (Math.random() * 6); int dice2 = 1 + (int) (Math.random() * 6); int sum = dice1+dice2; System.out.println("您骰到:" + dice1 + " " + dice2 + " 總合為:" + (dice1+dice2)); return sum; } }
全站熱搜
留言列表