我尝试制作一个非常简单的猜谜游戏,我想通过使用开关功能对用户的猜测进行分析,从而添加一个令人兴奋的补充,但令我惊讶的是它没有运行该分析 >
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
答案 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}}可以。
然后,您可能试图通过结合if
和case '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 ");
}
来找到绝对差异并将其用于条件中,从而使这些检查更具可读性。