I need to use the modulo operand to convert an inputted number of days to its equivalent number of year/s, month/s, week/s, and days. We just started discussion yesterday so I'm still a bit rusty but this is the program I made:
import java.util.Scanner;
public class DaysConvert {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int noOfDays, year, month, week, days;
System.out.print("Enter Number of Days: ");
noOfDays = input.nextInt();
year = noOfDays/365;
month = year%365;
week = month%30;
days = week%7;
System.out.println("Year: " + year);
System.out.println("Month: " + month);
System.out.println("Week: " + week);
System.out.println("Day: " + days);
}
}
Is my algorithm wrong or something?
If you are just going to a fixed 30 days
in a month 365 days
in a year with no leap year then you can iterate to the number of days in a for-loop and check the modulo of each one from the the user's inputted.
sample:
for(int i = 1; i < noOfDays+1; i++)
{
if((i %30) == 0)
month++;
if((i%7) == 0)
week++;
if((i%365) == 0)
++year;
if((i%1) == 0)
days++;
}
System.out.println("Year: " + year);
System.out.println("Month: " + month);
System.out.println("Week: " + week);
System.out.println("Days: " + days);
result:
Enter Number of Days: 330
Year: 0
Month: 11
Week: 47
Days: 330
This will work properly:
year = (double) (noOfDays/365);
month=noOfDays/30.41;
week=noOfDays/7;
i hope this helps.
Do it like this:
public class DaysConvert
{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int noOfDays, year, month, week, days;
System.out.print("Enter Number of Days: ");
noOfDays = input.nextInt();
year = noOfDays/365;
noOfDays=noOfDays%365;
month = noOfDays/30;
noOfDays=noOfDays%30;
week = noOfDays/7;
noOfDays=noOfDays%7;
System.out.println("Year: " + year);
System.out.println("Month: " + month);
System.out.println("Week: " + week);
System.out.println("Day: " + noOfDays);
}
}