繁体   English   中英

如何让我的 if 语句在 if-else 语句运行时再次运行?

[英]How to make my if statements run again as if-else statement runs?

目前,如果有人输入了一个超出范围的日期,它将导致else语句运行,这一切都很好而且很花哨,但我希望它运行if-else语句,它会重新运行if语句。 我真的不知道我应该做什么,所以任何帮助将不胜感激!

import java.util.Scanner;

public class Horoscope {
    public Horoscope() {
        Scanner sc = new Scanner(System.in);
        String output = "Please enter a valid date";
        int month;
        int day;

        System.out.println("What is your month of birth?");
        month = sc.nextInt();
        System.out.println("What is your day of birth?");
        day = sc.nextInt();

        if((month == 3 && day >= 20 && day <= 31) || (month == 4 && day >= 1 && day <= 19)) {
            System.out.println("You are an Aries");
        }
        else if((month == 4 && day >= 20 && day <= 30) || (month == 5 && day >= 1 && day <= 20)) {
            System.out.println("You are a Taurus");
        }
        else if((month == 5 && day >= 21 && day <= 31) || (month == 6 && day >= 1 && day <= 20)) {
            System.out.println("You are a Gemini");
        }
        else if((month == 6 && day >= 21 && day <= 30) || (month == 7 && day >= 1 && day <= 22)) {
            System.out.println("You are a Cancer");
        }
        else if((month == 7 && day >= 23 && day <= 31) || (month == 8 && day >= 1 && day <= 22)) {
            System.out.println("You are a Leo");
        }
        else if((month == 8 && day >= 23 && day <= 31) || (month == 9 && day >= 1 && day <= 22)) {
            System.out.println("You are a Virgo");
        }
        else if((month == 9 && day >= 23 && day <= 30) || (month == 10 && day >= 1 && day <= 22)) {
            System.out.println("You are a Libra");
        }
        else if((month == 10 && day >= 23 && day <= 30) || (month == 11 && day >= 1 && day <= 21)) {
            System.out.println("You are a Scorpio");
        }
        else if((month == 11 && day >= 22 && day <= 31) || (month == 12 && day >= 1 && day <= 21)) {
            System.out.println("You are a Sagittarius");
        }
        else if((month == 12 && day >= 22 && day <= 31) || (month == 1 && day >= 1 && day <= 19)) {
            System.out.println("You are a Capricorn");
        }
        else if((month == 1 && day >= 20 && day <= 31) || (month == 2 && day >= 1 && day <= 18)) {
            System.out.println("You are an Aquarius");
        }
        else if((month == 2 && day >= 19 && day <= 29) || (month == 3 && day >= 1 && day <= 20)) {
            System.out.println("You are a Pisces");
        }
        else {
        System.out.println(output);
        }
    }
}
import java.util.Scanner;

public class test {
    public test() {
        Scanner sc = new Scanner(System.in);
        String output = "Please enter a valid date";
        int month;
        int day;
        int k = 0;
// you can use do while loop. write some flag logic like I created k variable and it will be checked in while block
        do {
            System.out.println("What is your month of birth?");
            month = sc.nextInt();
            System.out.println("What is your day of birth?");
            day = sc.nextInt();

            if ((month == 3 && day >= 20 && day <= 31) || (month == 4 && day >= 1 && day <= 19)) {
                System.out.println("You are an Aries");
            } else if ((month == 4 && day >= 20 && day <= 30) || (month == 5 && day >= 1 && day <= 20)) {
                System.out.println("You are a Taurus");
            } else if ((month == 5 && day >= 21 && day <= 31) || (month == 6 && day >= 1 && day <= 20)) {
                System.out.println("You are a Gemini");
            } else if ((month == 6 && day >= 21 && day <= 30) || (month == 7 && day >= 1 && day <= 22)) {
                System.out.println("You are a Cancer");
            } else if ((month == 7 && day >= 23 && day <= 31) || (month == 8 && day >= 1 && day <= 22)) {
                System.out.println("You are a Leo");
            } else if ((month == 8 && day >= 23 && day <= 31) || (month == 9 && day >= 1 && day <= 22)) {
                System.out.println("You are a Virgo");
            } else if ((month == 9 && day >= 23 && day <= 30) || (month == 10 && day >= 1 && day <= 22)) {
                System.out.println("You are a Libra");
            } else if ((month == 10 && day >= 23 && day <= 30) || (month == 11 && day >= 1 && day <= 21)) {
                System.out.println("You are a Scorpio");
            } else if ((month == 11 && day >= 22 && day <= 31) || (month == 12 && day >= 1 && day <= 21)) {
                System.out.println("You are a Sagittarius");
            } else if ((month == 12 && day >= 22 && day <= 31) || (month == 1 && day >= 1 && day <= 19)) {
                System.out.println("You are a Capricorn");
            } else if ((month == 1 && day >= 20 && day <= 31) || (month == 2 && day >= 1 && day <= 18)) {
                System.out.println("You are an Aquarius");
            } else if ((month == 2 && day >= 19 && day <= 29) || (month == 3 && day >= 1 && day <= 20)) {
                System.out.println("You are a Pisces");
            } else {
                System.out.println(output);
                k = 1;
            }
        } while (k == 1);

    }
}

解决了。 我创建了一个名为 k 的 int 并将其设置为 1 并在它等于 1 时运行 do,如果它导致一个 true if 语句,它返回 0 并结束代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM