为了账号安全,请及时绑定邮箱和手机立即绑定

使复活节计算器代码更高效的可能方法?

使复活节计算器代码更高效的可能方法?

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条经验 获得超3个赞

我建议使用 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 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信