亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使復活節計算器代碼更高效的可能方法?

使復活節計算器代碼更高效的可能方法?

MYYA 2023-10-19 21:35:15
這是我的復活節計算器的代碼。工作正常,想知道是否有一種方法可以提高效率(尤其是月份選擇部分)。if 語句非常長,想知道我是否可以使用數組來選擇月份。對于將來的參考,這樣的 if 語句將非常耗時,感謝您的反饋。import java.util.*;import java.lang.Math;class Main {    public static void main(String[] args) {        Scanner userInput = new Scanner(System.in);        System.out.println("\nWelcome to the Easter Calculator. Please enter the current year below.");        int y = userInput.nextInt();        int p = y/100;        int q = y - (19*(y/19));        int r = (p-17)/25;        int s = p - (p/4) - ((p-r)/3) + (19*q) + 15;        s = s - (30*(s/30));        s = s - ((s/28)*1-((s/28)*(29/(s+1))*((21-q)/11)));        int t = y + (y/4) + s + 2 - p + (p/4);        t = t - (7*(t/7));        int u = s - t;        int m = 3 + ((u+40)/44);        int d = u + 28 - (31*(m/4));        String month;        if(m == 1){            month = "January";        }        else if(m == 2){            month = "February";        }        else if(m == 3){            month = "March";        }        else if(m == 4){            month = "April";        }        else if(m == 5){            month = "May";        }        else if(m == 6){            month = "June";        }        else if(m == 7){            month = "July";        }        else if(m == 8){            month = "August";        }        else if(m == 9){            month = "September";        }        else if(m == 10){            month = "October";        }        else if(m == 11){            month = "November";        }        else{            month = "December";        }        System.out.println("\nEaster will be on "+month+" "+d+", "+y+".");    }}
查看完整描述

4 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

可能用最少的代碼行進行最快的解碼是通過一個字符串數組,我們稱之為monthNames,包含所有月份的名稱。它的長度為 12,并且由于數組索引是從 0 開始的,因此您必須以這種方式獲取字符串,例如第 1 個月的字符串:String month = monthNames[m-1];



查看完整回答
反對 回復 2023-10-19
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

其他人提到過,但我也會選擇數組


就像是:


    String month = "";

    int m = 1; // january


    String[] months = {"January", "Febuary", "March", "April", "May", "June", "July", "August",

            "September", "October", "November", "December"};


    month = months[m-1];


查看完整回答
反對 回復 2023-10-19
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

switch 語句和字符串數組一樣有效。我發現該數組更容易使用!


//Array to hold each month of the year

String monthArray[] = {"January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};


//Final output statement stating the month, day, and year easter will be held.

System.out.println("\nEaster will be on "+monthArray[m-1]+" "+d+", "+y+".");


查看完整回答
反對 回復 2023-10-19
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我建議使用 switch 語句。這里有一些可以讓你開始的事情:


switch(m) {

    case 1: month = "January";

        break;

    case 2: month = "February";

        break;

    case 3: month = "March";

        break;

    case 4: month = "April";

        break;

    ...

    case 11: month = "November";

        break;

    default: month = "December";

}

另外,我建議正確縮進代碼,這樣如果出現任何問題,可以更輕松地閱讀和調試。另外,我建議為變量指定有意義的名稱。單字母名稱沒有多大意義,因此很快就會變得非常混亂。


查看完整回答
反對 回復 2023-10-19
  • 4 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號