A number between 1 and 365 is requested from the user. The number represents the day number of the year. The corresponding date is displayed.
I get stuck on the method calculationDateWithDayNumber
An example: the number 105 should be converted to date 15 April. My result is -31 February. Where does it go wrong?
public class DateOperations { private final static String[] MONTHS = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; private static final int[] NUMBERDAYS = {31,28,31,30,31,30,31,31,30,31,30,31}; public static String calculationDateWithDayNumber(int day) { int month = 0; for (int i=0; day>=NUMBERDAYS[i] ;i++) {day=-NUMBERDAYS[i]; ++ month;} String nameMonth = MONTHS[month]; String datum = String.format("%d%s",day, nameMonth); return datum; } }
Advertisement
Answer
I guess you are practicing. Two fixes are needed, see below comments in code
day=-NUMBERDAYS[i]
means you are assign value of (-1*NUMBERDAYS[i]
) in day
. But I think you should minus NUMBERDAYS[i]
from day
like day - NUMBERDAYS[i]
and assign the value in day
like day = day - NUMBERDAYS[i]
or using shorthand operator like day -= NUMBERDAYS[i]
public static String calculationDateWithDayNumber(int day) { int month = 0; for (int i = 0; day > NUMBERDAYS[i]; i++) { // Fix here, remove equals since day can be last day of month day = day - NUMBERDAYS[i]; // Fix here, minus the NUMBERDAYS[i] from day ++month; } String nameMonth = MONTHS[month]; String datum = String.format("%d %s", day, nameMonth); return datum; }
Output: 15 April