根据用户输入

时间:2016-12-05 16:58:34

标签: java math equation

我目前正在开展一个项目,我想知道是否有其他人可以想出一个方程式来计算用户输入日历的第一天。

我现在使用的等式是((dayOfWeek-1) - (day-1)%7)

星期几是与用户输入的工作日相当的数字。防爆。 - 星期日是1,星期一是2,星期二是3等我然后减去一个找到阵列m 数字位置(数组从0开始计数)。

日是他们进入的日子,目前是一个月。防爆。 - 21,8,5。然后我再次减去找到阵列号的位置。然后,阵列位置是模数7,找到日历开始的周日。防爆。如果我在21日输入那么它将是21-1%7,即6。

然后将这两个数字相互分开。

示例 - ((4-1) - (21-1)%7) 3 - 20%7 3-6 答案:-3 如果我是对的,那就意味着9月份会在星期四开始。

任何人都可以想到另一个能给出不同(更小或更大)的答案的等式吗?

注意:不能使用日历等类。

编辑: 根据要求:

用户输入示例

年:2016

月:9

日:21

星期几:4(星期四)

日历输出:

Output example

2 个答案:

答案 0 :(得分:0)

注意:您当前的解决方案不适用于一周中的某一天很小的情况(例如星期日[' 1']),因为((dayOfWeek-1) - (day-1)%7)将产生零或负数。

假设:

  • daysInMonth = {1 ... 31}
  • dayInWeek = {1 ... 7}
  • daysInMonthReminder = {0 ... 6}

     int daysInMonthReminder = dayInMonth%7;
    
      if(daysInMonthReminder >= dayInWeek) {
    
        daysInMonthReminder = daysInMonthReminder - dayInWeek;
    
        dayInWeek = 7;
    
    }
    
    return ((dayInWeek - daysInMonthReminder)%7) + 1;
    

答案 1 :(得分:0)

public class FirstDayInMonth {
    final static String [] daysOfWeek = {
            "Sunday",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
    };
    public static void main(String [] args) {
        try {
        int dayInMonth = Integer.parseInt(args[0]);
        int dayInWeek = Integer.parseInt(args[1]);

        int firstDayinMonth =(dayInWeek-dayInMonth%7)>=0?dayInWeek-dayInMonth%7:7+(dayInWeek-dayInMonth%7);
        System.out.println("The first day of the month is: " + daysOfWeek[firstDayinMonth]);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}