Почему последнее утверждение еще не распечатывается / выполняется здесь?- [ОТВЕТИТЬ] - PullRequest
1 голос
/ 03 июля 2019

Отредактировано - ответил. На этот вопрос ответили. Спасибо, ребята, вы потрясающие! Я не знал, как пометить вопрос решен / ответил так, Я решил, что добавлю это.

Последний оператор 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 ]

1 голос
/ 03 июля 2019

Это цикл 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!");
    }

По сути ваш код должен быть преобразован таким образом

1 голос
/ 03 июля 2019

вы должны вывести этот код System.out.println("Correct Guess!") из цикла, поскольку он будет повторяться до тех пор, пока не найдет предполагаемое значение, не переходя к следующей строке кода.

Пожалуйста, используйте код ниже.

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

}
1 голос
/ 03 июля 2019

Ваша проблема в состоянии цикла 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!");
    }

}

}

1 голос
/ 03 июля 2019

Когда сравнивается правильное число, код сразу же выходит из цикла 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!");
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...