I've made a working calendar program, BUT I believe it's extremely inefficient. I think I have way too many else if
statements:
import java.util.*;
public class MyOwnCalendar {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter the number of days in month: ");
int days = keyboard.nextInt();
System.out.print("Enter which day the first day is on: ");
int firstDay = keyboard.nextInt();
System.out.println("S M T W Th F Sa");
int ctr = 1;
if (days == 31 && firstDay == 1)
{
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 8 || ctr == 15 || ctr == 22 || ctr == 29)
{
System.out.println();
}
}
}
else if (days == 31 && firstDay == 2)
{
System.out.print("\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 7 || ctr == 14 || ctr == 21 || ctr == 28)
{
System.out.println();
}
}
}
else if (days == 31 && firstDay == 3)
{
System.out.print("\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 6 || ctr == 13 || ctr == 20 || ctr == 27)
{
System.out.println();
}
}
}
else if (days == 31 && firstDay == 4)
{
System.out.print("\t\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 5 || ctr == 12 || ctr == 19 || ctr == 26)
{
System.out.println();
}
}
}
else if (days == 31 && firstDay == 5)
{
System.out.print("\t\t\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 4 || ctr == 11 || ctr == 18 || ctr == 25)
{
System.out.println();
}
}
}
else if (days == 31 && firstDay == 6)
{
System.out.print("\t\t\t\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 3 || ctr == 10 || ctr == 17 || ctr == 24 || ctr == 31)
{
System.out.println();
}
}
}
else if (days == 31 && firstDay == 7)
{
System.out.print("\t\t\t\t\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 2 || ctr == 9 || ctr == 16 || ctr == 23 || ctr == 30)
{
System.out.println();
}
}
}
else if (days == 30 && firstDay == 1)
{
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 8 || ctr == 15 || ctr == 22 || ctr == 29)
{
System.out.println();
}
}
}
else if (days == 30 && firstDay == 2)
{
System.out.print("\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 7 || ctr == 14 || ctr == 21 || ctr == 28)
{
System.out.println();
}
}
}
else if (days == 30 && firstDay == 3)
{
System.out.print("\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 6 || ctr == 13 || ctr == 20 || ctr == 27)
{
System.out.println();
}
}
}
else if (days == 30 && firstDay == 4)
{
System.out.print("\t\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 5 || ctr == 12 || ctr == 19 || ctr == 26)
{
System.out.println();
}
}
}
else if (days == 30 && firstDay == 5)
{
System.out.print("\t\t\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 4 || ctr == 11 || ctr == 18 || ctr == 25)
{
System.out.println();
}
}
}
else if (days == 30 && firstDay == 6)
{
System.out.print("\t\t\t\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 3 || ctr == 10 || ctr == 17 || ctr == 24 || ctr == 31)
{
System.out.println();
}
}
}
else if (days == 30 && firstDay == 7)
{
System.out.print("\t\t\t\t\t\t");
while (ctr <= days)
{
System.out.print(ctr);
System.out.print(" ");
ctr++;
if (ctr == 2 || ctr == 9 || ctr == 16 || ctr == 23 || ctr == 30)
{
System.out.println();
}
}
}
}
}
What are some easier ways to do this? Would a for
loop have made this easier?