有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对于上面提到的程序,我得到一个测试用例的运行时错误。所有剩余的测试用例都通过了。有什么建议吗

class Result {

   public static String findDay(int month, int day, int year) {
         String [] B = {"MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"}; 
     Calendar A = Calendar.getInstance();
     A.set(Calendar.MONTH, month-1);
     A.set(Calendar.YEAR, year); 
     A.set(Calendar.DAY_OF_MONTH,day);
     return B[A.get(Calendar.DAY_OF_WEEK)-2];
      }

}

对于其中一个测试用例,我得到了上面提到的代码的运行时错误。我不明白为什么,你能告诉我以后如何解决这种运行时错误吗


共 (1) 个答案

  1. # 1 楼答案

    我在这段代码中看到了两个问题,它们都是关于索引的。 我建议这个版本:

        public static String findDay(int month, int day, int year) {
        String [] B = {"MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"}; 
        Calendar A = Calendar.getInstance();
    
        final int monthIndex = (month + 11) % 12;
        A.set(Calendar.MONTH, monthIndex);
        A.set(Calendar.YEAR, year);
        A.set(Calendar.DAY_OF_MONTH,day);
    
        final int dayIndex = (A.get(Calendar.DAY_OF_WEEK) + 5) % 7;
        return B[dayIndex];
    }
    

    如您所见,我使用模仍然在数组“B”的索引范围内。我对“月指数”也这样做