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

Java 这个非常简单的猜测游戏不起作用,java,Java,我尝试制作一个非常简单的猜测游戏,我想通过使用切换功能对用户的猜测进行分析来添加一个令人兴奋的内容,但令我惊讶的是,它没有运行该分析 public static void main (String args[]){ Scanner reader = new Scanner(System.in).useLocale(Locale.ROOT); int num = 8 , guess; boolean positiveguess = true; while (positiveguess) { S

我尝试制作一个非常简单的猜测游戏,我想通过使用切换功能对用户的猜测进行分析来添加一个令人兴奋的内容,但令我惊讶的是,它没有运行该分析

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)
    switch(guess)
    {
        case '1':
            if (num-5 < guess && num + 5 >guess)
                System.out.println("Your guess is almost close! \nTry again ");
       break;
        case '2':
            if (num-10 < guess && num + 10 >guess)
                System.out.println("You need to guess again ");
        break;    
    }              
else
    positiveguess = false;
    
}
System.out.println("Great !");
publicstaticvoidmain(字符串参数[]){
Scanner reader=new Scanner(System.in).useLocale(Locale.ROOT);
int num=8,猜测;
布尔正高斯=真;
while(正数){
System.out.println(“输入您的猜测=”);
guess=reader.nextInt();
如果(猜测!=num)
开关(猜测)
{
案例“1”:
如果(num-5guess)
System.out.println(“您的猜测几乎接近了!\n再次尝试”);
打破
案例“2”:
如果(num-10guess)
System.out.println(“您需要再次猜测”);
打破
}              
其他的
阳性=假;
}
System.out.println(“太棒了!”);

您在此处错误地使用了
开关。您似乎在寻找类似以下内容:

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 ");
}

另外,您可以通过将顺序更改为
(num-5
或使用
Math.abs
查找绝对差异,并在条件下使用。

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

公共类主{
公共静态void main(字符串参数[]){
Scanner reader=new Scanner(System.in).useLocale(Locale.ROOT);
int num=8,猜测;
布尔正高斯=真;
while(正数){
System.out.println(“输入您的猜测=”);
guess=reader.nextInt();
如果(猜测!=num){
如果(num-5guess){
System.out.println(“您的猜测几乎接近了!\n再次尝试”);
}else if(num-10guess){
System.out.println(“您需要再次猜测”);
}
}否则{
阳性=假;
}
}
System.out.println(“太棒了!”);
}
}
然后,我建议您删除您的
positiveguess
,并在
过程中执行
循环,将您的条件放入其中。然后使用
Math.abs()
获得猜测值和期望值之间的差

公共类主{
公共静态void main(字符串参数[]){
Scanner reader=new Scanner(System.in).useLocale(Locale.ROOT);
int num=8;
int guess=Integer.MIN_值;
while(猜测!=num){
System.out.println(“输入您的猜测=”);
guess=reader.nextInt();
int diff=Math.abs(num-guess);
如果(差异!=0){
如果(差值<5){
System.out.println(“您的猜测几乎接近了!\n再次尝试”);
}否则如果(差值<10){
System.out.println(“您需要再次猜测”);
}否则{
System.out.println(“你太过分了,兄弟”);
}
}
}
System.out.println(“太棒了!”);
}
}

您是在字符值而不是int值上进行分支,即用
案例1
替换
案例1
等等..我对您在检查中使用
num
感到困惑…您是否试图查看
猜测是否在
num
的特定范围内?您可以通过doi更轻松地实现这一点ng
int-accurity=Math.abs(num-guess);
后接检查,如
if(accurity<5){//close-accurity message}else if(accurity<10){//not so-accurity message}else{//not accurity at all message}
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 ");
}