Java (Find the future date with if else statements)

后端 未结 6 1573
故里飘歌
故里飘歌 2020-12-22 14:39

I have a question that I can\'t figure it out , Thank you: Write a program that prompts the user to enter an integer for today\'s day of the week (Sunday is 0 ,Monday is 1 ,

6条回答
  •  盖世英雄少女心
    2020-12-22 15:15

    As you need day-number to day-string twice, put it in a separate function. I want to show you a couple of possible approaches. Version 1, basic, simple and tidy:

    // isolate the daynumber --> daystring in a function, that's tidier
    String dayFor (int daynumber) {
        String dayAsString = "ERROR";  // the default return value
        switch(dayNumber) {
            case 0 :
                dayAsString = "Sunday";
                break;
            case 1 :
                dayAsString = "Monday";
                break;
            // and so on, until
            case 6 :
                dayAsString = "Saturday";
                break;
         }
         return dayAsString;
    }
    

    A much shorter version that uses an array instead of the switch statement:

    String dayFor (int daynumber) {
        String dayStrings[] = new String[]{"Sunday","Monday", .... "Saturday"};
        // notice that daynumber's modulo is used here, to avoid index out of
        // bound errors caused by erroneous daynumbers:
        return dayStrings[daynumber % 7];
    }
    

    It might be tempting to try something along the lines of the following function where each case returns immediately, but having multiple return statements is discouraged. Just showing it here because it is technically possible, and you'll encounter it sometimes

    String dayFor (int daynumber) {
        switch(dayNumber) {
            case 0 :
                return "Sunday";
            case 1 :
                return "Monday";
    
            // and so on, until
    
            case 6 :
                return "Saturday";
         }
         // normally not reached but you need it because the compiler will
         // complain otherwise anyways.
         return "ERROR";
    }
    

    After this rather long intro the main function becomes short and simple. After the input you just need:

    // present day + elapsed modulo 7 = the future day
    int future = (day + elapsed) % 7;
    System.out.print("Today is " + dayFor(day) + " and the future day is " + dayFor(future) );
    

    Don't forget to add code to check your inputs!

提交回复
热议问题