-2

Just a short program that figures out what day it will be in an amount of days the user inputs. I have it starting at DAY 6 which is Saturday. Is there a way I can shorter the code using a loop?

import java.util.Scanner;

class Week{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);

        int days[] = {1,2,3,4,5,6,7,8};
        String dayNames[] = {"Monday","Tuesday","Wednesday","Thursday","Friday",
                "Saturday", "Sunday"};
        int numdays;

        System.out.println("Enter how many days from now: ");
        numdays = input.nextInt();

        numdays = (6 + numdays) % 7;

        if(numdays == 0){
            System.out.println(dayNames[6]);
        }
        else if(numdays == 1 ){
            System.out.println(dayNames[0]);
        }
        else if(numdays == 2){
            System.out.println(dayNames[1]);
        }
        else if(numdays == 3){
            System.out.println(dayNames[2]);
        }
        else if(numdays == 4){
            System.out.println(dayNames[3]);
        }
        else if(numdays == 5){
            System.out.println(dayNames[4]);
        }
        else if(numdays == 6){
            System.out.println(dayNames[5]);
        }
    }
}
Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
Cakes
  • 19
  • 1
  • 6

5 Answers5

3

The following section:

if(numdays == 0){
    System.out.println(dayNames[6]);
}
else if(numdays == 1 ){
    System.out.println(dayNames[0]);
}
else if(numdays == 2){
    System.out.println(dayNames[1]);
}
else if(numdays == 3){
    System.out.println(dayNames[2]);
}
else if(numdays == 4){
    System.out.println(dayNames[3]);
}
else if(numdays == 5){
    System.out.println(dayNames[4]);
}
else if(numdays == 6){
    System.out.println(dayNames[5]);
}

... is trivially replaced with:

System.out.println(dayNames[(numdays + 6) % 7)]);
Cairnarvon
  • 25,981
  • 9
  • 51
  • 65
2

Start with sunday:

String dayNames[] = {"Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday",
            "Saturday"};

Replace the big if/else with:

System.out.println(dayNames[numdays]);
Ankur
  • 33,367
  • 2
  • 46
  • 72
1

You can use switch case instead of multiple if statements

like

switch(numdays) {
  case 1:  ....  break;
  case 2: ..... break;
.....
}

or

String dayNames[] = {"Sunday", "Monday","Tuesday","Wednesday","Thursday",
  "Friday","Saturday"};

then you can specify index directly

System.out.println(dayNames[numdays]);
PSR
  • 39,804
  • 41
  • 111
  • 151
0
for(numdays=0;numdays<=6;numdays++){
System.out.println(dayNames[(numdays + 6) % 7)]);
}
Vaibhav Jain
  • 3,729
  • 3
  • 25
  • 42
0

There's no need for a loop

String dayNames[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
                "Sunday" };
int i  = (5 + numdays) % 7;
System.out.println(dayNames[i]);
Evgeniy Dorofeev
  • 133,369
  • 30
  • 199
  • 275