函式,只能創建在類別(class)下方,且一個類別裡,main函式只可以有一個。用來將重複、同樣的功能,定義一起。

image

 

各個函式中宣告的變數,創建的記憶體空間不同,因此變數名稱可以重複

但陣列在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;
    }

}

image

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Lillian 的頭像
    Lillian

    安安的code日記

    Lillian 發表在 痞客邦 留言(0) 人氣()