2016-06-01 17 views
-1

Мне нужно создать программу, которая показывает день недели, когда вы вводите конкретную дату на консоль.Расчет дня недели, введя определенную дату

Вот код, который я написал, но все еще не работает, почему бы и нет?

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); 
    } 
} 
+2

Почему вы думаете, что * должна * работа? Как вы думаете, что вы здесь вычисляете? Какой вклад вы даете, какой результат вы получаете, чего вы ожидаете? –

+0

Вы можете рассчитать число юлианских дней с григорианской даты [используя описанный здесь метод] (https://en.wikipedia.org/wiki/Julian_date#Converting_Julian_or_Gregorian_calendar_date_to_Julian_day_number). В вашем коде есть подсказки этого метода (например, '(14-м)/12' и' yo/4-yo/100 + yo/400'), но это не совсем то же самое. Возможно, попробуйте этот метод, посмотрите, сможете ли вы получить правильный ответ. –

+0

У меня есть базовый расчёт Григорианского календаря выше, затем я использовал конструкцию switch (как это требовалось назначением). Я определенно сделал что-то не так, но я просто не мог его найти. Спасибо за советы, я буду смотреть на это. –

ответ

0

Попробуйте это:

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)); 
Смежные вопросы