Input would be month day year
, and output the day of week.
//sample input08 05 2015//sample outputWEDNESDAY//sample input 08 05 2015 //sample output WEDNESDAY//sample input 08 05 2015 //sample output WEDNESDAY
Enter fullscreen mode Exit fullscreen mode
proper solution
DISCLAIMER: the solution referenced from the editorial
<span>public</span> <span>static</span> <span>String</span> <span>findDay</span><span>(</span><span>int</span> <span>year</span><span>,</span> <span>int</span> <span>month</span><span>,</span> <span>int</span> <span>day</span><span>)</span> <span>{</span><span>Calendar</span> <span>date</span> <span>=</span> <span>Calendar</span><span>.</span><span>getInstance</span><span>();</span><span>date</span><span>.</span><span>set</span><span>(</span><span>year</span><span>,</span> <span>month</span><span>,</span> <span>day</span><span>);</span><span>return</span> <span>date</span><span>.</span><span>get</span><span>(</span><span>Calendar</span><span>.</span><span>DAY_OF_WEEK</span><span>);</span> <span>//error</span><span>}</span><span>public</span> <span>static</span> <span>String</span> <span>findDay</span><span>(</span><span>int</span> <span>year</span><span>,</span> <span>int</span> <span>month</span><span>,</span> <span>int</span> <span>day</span><span>)</span> <span>{</span> <span>Calendar</span> <span>date</span> <span>=</span> <span>Calendar</span><span>.</span><span>getInstance</span><span>();</span> <span>date</span><span>.</span><span>set</span><span>(</span><span>year</span><span>,</span> <span>month</span><span>,</span> <span>day</span><span>);</span> <span>return</span> <span>date</span><span>.</span><span>get</span><span>(</span><span>Calendar</span><span>.</span><span>DAY_OF_WEEK</span><span>);</span> <span>//error</span> <span>}</span>public static String findDay(int year, int month, int day) { Calendar date = Calendar.getInstance(); date.set(year, month, day); return date.get(Calendar.DAY_OF_WEEK); //error }
Enter fullscreen mode Exit fullscreen mode
The code would have error because date.get(Calendar.DAY_OF_WEEK)
returns integer value of day of week. For example, returns 1 for SUNDAY, 2 for MONDAY, and 7 for SATURDAY.
We need to create an additional array to reference day of week:
<span>// outside main method</span><span>static</span> <span>String</span><span>[]</span> <span>dayOfWeek</span> <span>=</span> <span>{</span><span>"SUNDAY"</span><span>,</span> <span>"MONDAY"</span><span>,</span> <span>"TUESDAY"</span><span>,</span> <span>"WEDNESDAY"</span><span>,</span> <span>"THURSDAY"</span><span>,</span> <span>"FRIDAY"</span><span>,</span> <span>"SATURDAY"</span><span>};</span><span>public</span> <span>static</span> <span>String</span> <span>findDay</span><span>(</span><span>int</span> <span>year</span><span>,</span> <span>int</span> <span>month</span><span>,</span> <span>int</span> <span>day</span><span>)</span> <span>{</span><span>Calendar</span> <span>date</span> <span>=</span> <span>Calendar</span><span>.</span><span>getInstance</span><span>();</span><span>date</span><span>.</span><span>set</span><span>(</span><span>year</span><span>,</span> <span>month</span><span>,</span> <span>day</span><span>);</span><span>return</span> <span>dayOfWeek</span><span>[</span><span>date</span><span>.</span><span>get</span><span>(</span><span>Calendar</span><span>.</span><span>DAY_OF_WEEK</span><span>)-</span><span>1</span><span>];</span><span>}</span><span>// outside main method</span> <span>static</span> <span>String</span><span>[]</span> <span>dayOfWeek</span> <span>=</span> <span>{</span><span>"SUNDAY"</span><span>,</span> <span>"MONDAY"</span><span>,</span> <span>"TUESDAY"</span><span>,</span> <span>"WEDNESDAY"</span><span>,</span> <span>"THURSDAY"</span><span>,</span> <span>"FRIDAY"</span><span>,</span> <span>"SATURDAY"</span><span>};</span> <span>public</span> <span>static</span> <span>String</span> <span>findDay</span><span>(</span><span>int</span> <span>year</span><span>,</span> <span>int</span> <span>month</span><span>,</span> <span>int</span> <span>day</span><span>)</span> <span>{</span> <span>Calendar</span> <span>date</span> <span>=</span> <span>Calendar</span><span>.</span><span>getInstance</span><span>();</span> <span>date</span><span>.</span><span>set</span><span>(</span><span>year</span><span>,</span> <span>month</span><span>,</span> <span>day</span><span>);</span> <span>return</span> <span>dayOfWeek</span><span>[</span><span>date</span><span>.</span><span>get</span><span>(</span><span>Calendar</span><span>.</span><span>DAY_OF_WEEK</span><span>)-</span><span>1</span><span>];</span> <span>}</span>// outside main method static String[] dayOfWeek = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; public static String findDay(int year, int month, int day) { Calendar date = Calendar.getInstance(); date.set(year, month, day); return dayOfWeek[date.get(Calendar.DAY_OF_WEEK)-1]; }
Enter fullscreen mode Exit fullscreen mode
use another class
Instead of the class java.util.Calendar
it mentioned, java.time.LocalDate
(Java 8 and higher) actually finish all the work nice and neat.
<span>public</span> <span>static</span> <span>String</span> <span>findDay</span><span>(</span><span>int</span> <span>year</span><span>,</span> <span>int</span> <span>month</span><span>,</span> <span>int</span> <span>day</span><span>)</span> <span>{</span><span>LocalDate</span> <span>date</span> <span>=</span> <span>LocalDate</span><span>.</span><span>of</span><span>(</span><span>year</span><span>,</span> <span>month</span><span>,</span> <span>day</span><span>);</span><span>return</span> <span>date</span><span>.</span><span>getDayOfWeek</span><span>().</span><span>toString</span><span>();</span> <span>//getDayOfWeek() returns a DayOfWeek object</span><span>}</span><span>public</span> <span>static</span> <span>String</span> <span>findDay</span><span>(</span><span>int</span> <span>year</span><span>,</span> <span>int</span> <span>month</span><span>,</span> <span>int</span> <span>day</span><span>)</span> <span>{</span> <span>LocalDate</span> <span>date</span> <span>=</span> <span>LocalDate</span><span>.</span><span>of</span><span>(</span><span>year</span><span>,</span> <span>month</span><span>,</span> <span>day</span><span>);</span> <span>return</span> <span>date</span><span>.</span><span>getDayOfWeek</span><span>().</span><span>toString</span><span>();</span> <span>//getDayOfWeek() returns a DayOfWeek object</span> <span>}</span>public static String findDay(int year, int month, int day) { LocalDate date = LocalDate.of(year, month, day); return date.getDayOfWeek().toString(); //getDayOfWeek() returns a DayOfWeek object }
Enter fullscreen mode Exit fullscreen mode
暂无评论内容