如果用户输入无效h

1 java

我是一名新的程序员,我为我的班级做了这项任务.我的问题是,如果用户输入无效并且执行了else语句,那么如何System.out.println("Your Sign is " + sign);在else语句执行之后进行,而不必在每个if/else if语句中都有System.out.print.

因此,如果用户输入无效,则输出应仅为:"无效输入.请运行程序再试一次."

import java.util.Scanner;

public class Sign {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int month, day;

        System.out.println("What's your sign?");
        System.out.print("Please enter the month of your birth (1-12): ");
        month = input.nextInt();
        System.out.print("Please enter the day of your birth (1-31): ");
        day = input.nextInt();
        String sign = "";

        if ((month == 3 && (day >= 21 && day <= 31)) || (month == 4 && (day >= 1 && day <= 19))) {
            sign = "Aries";
        }
        else if ((month == 4 && (day >= 20 && day <= 30)) || (month == 5 && (day >= 1 && day <= 20))) {
            sign = "Taurus";
        }
        else if ((month == 5 && (day >= 21 && day <= 31)) || (month == 6 && (day >= 1 && day <= 21))) {
            sign = "Gemini";
        }
        else if ((month == 6 && (day >= 22 && day <= 30)) ||(month == 7 && (day >= 1 && day <= 22))) {
            sign = "Cancer";
        }
        else if ((month == 7 && (day >= 23 && day <= 31)) || (month == 8 && (day >= 1 && day <= 22))) {
            sign = "Leo";
        }
        else if ((month == 8 && (day >= 23 && day <= 31)) || (month == 9 && (day >= 1 && day <= 22))) {
            sign = "Virgo";
        }
        else if ((month == 9 && (day >= 23 && day <= 30)) || (month == 10 && (day >= 1 && day <= 22))) {
            sign = "Libra";
        }
        else if ((month == 10 && (day >= 23 && day <= 31)) || (month == 11 && (day >= 1 && day <= 21))) {
            sign = "Scorpio";
        }
        else if ((month == 11 && (day >= 22 && day <= 30)) || (month == 12 && (day >=1 && day <= 21))) {
            sign = "Sagittarius";
        }
        else if ((month == 12 && (day >= 22 && day <= 31)) || (month == 1 && (day >= 1 && day <= 19))) {
            sign="Capricon";
        }
        else if ((month == 1 && (day >= 20 && day <= 31)) || (month == 2 && (day >= 1 && day <= 18))) {
            sign="Aquarius";
        }
        else if((month == 2 && (day >= 19 && day <= 29)) || (month == 3 && (day >= 1 && day <= 20))) {
            sign="Pieces";
        }
       else {
           System.out.println("Invalid Entry. Please run the program to try again.");
        }

        System.out.println("Your Sign is " + sign);
        input.close();

    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

您可以删除您的else子句,并使用值sign作为有效输入的指示.

String sign = null;
if ((month == 3 && (day >= 21 && day <= 31)) || (month == 4 && (day >= 1 && day <= 19))) {
     sign = "Aries";
} else if ...
    ...
} else if ((month == 2 && (day >= 19 && day <= 29)) || (month == 3 && (day >= 1 && day <= 20))) {
    sign="Pieces";
}

if (sign != null) {
    System.out.println("Your Sign is " + sign);
} else {
    System.out.println("Invalid Entry. Please run the program to try again.");
}
Run Code Online (Sandbox Code Playgroud)