为什么最后的else语句不在这里打印/执行? -[回答]

时间:2019-07-03 17:26:38

标签: java if-statement

  

已编辑-已回答。这个问题已经回答。谢谢你们   是真棒!我不知道如何将问题标记为已解决/已回答,   我决定我将其添加。

最后的else语句将不会打印任何内容... 只是接受输入并停止程序。我在做什么错了?

我是一个全新的人,刚刚开始学习Java。没有任何代码的经验。抱歉。

尝试语法检查对于“我的菜鸟眼睛”来说一切都很好

import java.util.Scanner;
public class MyClass 
{
    public static void main(String[] args)

    { 
        Scanner scn = new Scanner(System.in);

        int x =7;

        System.out.println("Enter a Number from 1 to 10: ");

        int guess = scn.nextInt();

        while(x != guess) 
        {
            if(x < guess) {
            System.out.println("Guess Lower...");
            guess = scn.nextInt();
            }

            else if (x > guess) {
                System.out.println("Guess Higher...");
                guess = scn.nextInt();
            }

            else {
            System.out.println("Correct Guess!");
            }
        } 
        }

}


所以如果我输入7 它应该说/显示 猜对了!

但是它什么也不会显示。

猜低和高的效果很好。

4 个答案:

答案 0 :(得分:1)

比较正确的数字后,代码会立即退出while循环,因此最后一个else语句不可访问。

您可以按照以下方式做您想做的事情:

import java.util.Scanner;
public class MyClass 
{
    public static void main(String[] args)

    { 
        Scanner scn = new Scanner(System.in);

        int x =7;

        System.out.println("Enter a Number from 1 to 10: ");

        int guess = scn.nextInt();

        while(x != guess) {
            if(x < guess) {
                System.out.println("Guess Lower...");
                guess = scn.nextInt();
            } else if (x > guess) {
                System.out.println("Guess Higher...");
                guess = scn.nextInt();
            }
        } 
        System.out.println("Correct Guess!");
     }
}

答案 1 :(得分:1)

您应该将此代码System.out.println("Correct Guess!")移出循环,因为它将一直循环直到找到要猜测的值,而无需转到代码的下一行。

pl请参见下面的代码。

Scanner scn = new Scanner(System.in);

    int x = 7;

    System.out.println("Enter a Number from 1 to 10: ");

    int guess = scn.nextInt();

    while (x != guess) {
        if (x == guess)
            System.out.println("correct");
        else if (x < guess) {
            System.out.println("Guess Lower...");
            guess = scn.nextInt();
        }

        else if (x > guess) {
            System.out.println("Guess Higher...");
            guess = scn.nextInt();
        }

    }
    System.out.println("correct");

}

答案 2 :(得分:1)

您的问题是while循环的条件。 看一下Recursión in Java。 可以这样做:

import java.util.*;

public class MyClass 
{

 public static void main(String []args)
 {
   new_guess();

}


static void new_guess()
{
    int correct_answer = 7;
    Scanner scn = new Scanner(System.in);

    System.out.println("Enter a Number from 1 to 10: ");
    int guess = scn.nextInt();

    if(correct_answer != guess)
    {
        if(correct_answer < guess)
        {
        System.out.println("Guess Lower...");
        }
        else if (correct_answer > guess) 
        {
            System.out.println("Guess Higher...");
        }
        new_guess();
    }
    else
    {
          System.out.println("Correct Guess!");
    }

}

}

答案 3 :(得分:1)

它是一个while循环,一直运行直到指定的表达式为假,因此您无需引入else块来“确认”猜测变量的相等性。当您的表达式返回false时,它将自动打印出下一步。

    while(x != guess) 
    {
        if(x < guess) {
        System.out.println("Guess Lower...");
        guess = scn.nextInt();
        }

        else if (x > guess) {
            System.out.println("Guess Higher...");
            guess = scn.nextInt();
        }
    } 
        System.out.println("correct!");
    }

基本上,您的代码应采用这种方式进行修改