Java 通过输入特定日期计算周日

Java 通过输入特定日期计算周日,java,calendar,Java,Calendar,我需要创建一个程序,显示一周中的哪一天,当您输入控制台的特定日期时 这是我写的代码,但仍然不起作用,为什么会这样 public class CalculateDay{ public static void main(String []args){ int m = Integer.parseInt(args[0]); int d = Integer.parseInt(args[1]); int y = Integer.parse

我需要创建一个程序,显示一周中的哪一天,当您输入控制台的特定日期时

这是我写的代码,但仍然不起作用,为什么会这样

public class CalculateDay{

     public static void main(String []args){


         int m = Integer.parseInt(args[0]);
         int d = Integer.parseInt(args[1]);
         int y = Integer.parseInt(args[2]);

         System.out.println("Finding day of week for "+m+"-"+d+"-"+y);


         int yo = y - ((14-m)/12);

         int x = yo + yo/4 - yo/100 + yo/400;

         int mo = m + 12*((14-m)/12) -2;

         int dayOfWeek = (d + x + (31*mo)/12)%7;

         String dayString;

         switch(dayOfWeek){
            case 0:    dayString = "Sunday";
                        break;
            case 1:    dayString = "Monday";
                        break;
            case 2:    dayString = "Tuesday";
                        break;
            case 3:    dayString = "Wednesday";
                        break;
            case 4:    dayString = "Thursday";
                        break;
            case 5:    dayString = "Friday";
                        break;
            case 6:    dayString = "Saturday";
                        break;            
            default:    dayString = "Could not find";
         }

        System.out.println(dayString);
     }
}
试试这个:

int m = Integer.parseInt(args[0]);
int d = Integer.parseInt(args[1]);
int y = Integer.parseInt(args[2]);

System.out.println("Finding day of week for "+m+"-"+d+"-"+y);

Calendar cal = new GregorianCalendar(y, m, d);
System.out.println("DAY_OF_WEEK: " + cal.get(Calendar.DAY_OF_WEEK));

为什么你认为它应该起作用?你认为你在计算什么?你的输入是什么,你得到了什么输出,你期望什么?你可以从公历日期计算出儒略日数。您的代码中有此方法的提示(例如
(14-m)/12
yo/4-yo/100+yo/400
),但它并不完全相同。也许试一下这个方法,看看你是否能得到正确的答案。我有一个基本的公历计算,然后我使用了开关构造(正如作业要求的那样)。我肯定做错了什么,但就是找不到。谢谢你的建议,我会看的。