这个非常简单的猜测游戏不起作用

时间:2020-09-17 14:35:59

标签: java

我尝试制作一个非常简单的猜谜游戏,我想通过使用开关功能对用户的猜测进行分析,从而添加一个令人兴奋的补充,但令我惊讶的是它没有运行该分析 >

DECLARE @P VARCHAR(MAX)
SET @P = N'{ "Agences":[ 1, 6 ],"Groupes":[ 40, 45 ] }' --Agences

SELECT TOP 20 *
FROM GRH_T_Salarie 
INNER JOIN (
   SELECT Agence, Groupe
   FROM OPENJSON(@P,'$.Agences') WITH (Agence INT '$')
   OUTER APPLY OPENJSON(@P,'$.Groupes') WITH (Groupe INT '$')
) agnt ON GRH_T_Salarie.IdAgenceExploitation = agnt.Agence

2 个答案:

答案 0 :(得分:1)

您的切换基于用户输入,而不是给定值和执行值之间的差异。首先,我建议您使用if/else这样的结构来简化操作

public class Main {

    public static void main (String args[]) {

        Scanner reader = new Scanner(System.in).useLocale(Locale.ROOT);

        int num = 8, guess;
        boolean positiveguess = true;
        while (positiveguess) {
            System.out.println("Enter your guess = ");
            guess = reader.nextInt();
            if (guess != num) {
                if (num - 5 < guess && num + 5 > guess) {
                    System.out.println("Your guess is almost close! \nTry again ");
                } else if (num - 10 < guess && num + 10 > guess) {
                    System.out.println("You need to guess again ");
                }
            } else {
                positiveguess = false;
            }
        }
        System.out.println("Great !");
    }
}

然后,我建议您删除positiveguess并使用内部条件进行while循环。并使用Math.abs()来获得猜测值和期望值之间的差。

public class Main {

    public static void main (String args[]) {

        Scanner reader = new Scanner(System.in).useLocale(Locale.ROOT);

        int num = 8;
        int guess = Integer.MIN_VALUE;

        while (guess != num) {
            System.out.println("Enter your guess = ");
            guess = reader.nextInt();

            int diff = Math.abs(num - guess);
            if (diff != 0) {
                if (diff < 5) {
                    System.out.println("Your guess is almost close! \nTry again ");
                } else if (diff < 10) {
                    System.out.println("You need to guess again ");
                } else {
                    System.out.println("You're way too far bro");
                }
            }
        }
        System.out.println("Great !");
    }
}

答案 1 :(得分:0)

您在此错误地使用了switch。看来您正在寻找这样的东西:

switch (guess) {
    // first case
    case (num-5 < guess && num + 5 >guess):
        System.out.println("Your guess is almost close! \nTry again ");
    // second case
    case (num-10 < guess && num + 10 >guess):
        System.out.println("You need to guess again ");
}

但这是无效的语法。在Java中,switch/case仅可以将元素与相同类型的其他元素(或者,在新版本中,多个元素或类)进行比较,而不能执行类似{{ 1}}可以。 然后,您可能试图通过结合ifcase '1'语句来“修复”它,但是合法的if仅在case '1'为{{1}的情况下才是这种情况。 }(即49),并且只有这样才会继续检查guess条件。

相反,只需放下'1'并直接使用您的if语句即可(不要忘记switch/case):

if

此外,您可以通过将顺序更改为else或使用if (num-5 < guess && num+5 > guess) { System.out.println("Your guess is almost close! \nTry again "); } else if (num-10 < guess && num+10 > guess) { System.out.println("You need to guess again "); } 来找到绝对差异并将其用于条件中,从而使这些检查更具可读性。