Вопрос о программе на Java - PullRequest
1 голос
/ 25 марта 2011
import java.util.*;


public class Guess
{
    public static void main (String[] args)
    {

        final int MAX=10;
        int answer, guess;

        Scanner scan = new Scanner(System.in);
        Random generator = new Random();

        answer = generator.nextInt(MAX)+1;

        System.out.print ("I'm thinking of a number between 1 and " + MAX + ".Guess what it is: ");

        guess=scan.nextInt();

        if (guess==answer);

            System.out.println (" You got it!");
        else
        { 
            System.out.println("That is not correct");
            System.out.println("The correct answer is"+ answer);
        }
    }
}

Когда я пытаюсь скомпилировать это, я получаю else без ошибки if, я не вижу почему, потому что у меня есть только одно условие if, а другое - сразу после if. Помогите пожалуйста, а также кто-то может объяснить эту строку answer = generator.nextInt(MAX)+1; почему автор из книги добавил 1?

Ответы [ 7 ]

4 голосов
/ 25 марта 2011

У вас есть ошибка.

if (guess == answer);
    System.out.println(" You got it!");
else {
    System.out.println("That is not correct");
    System.out.println("The correct answer is" + answer);
}

должно быть

if (guess == answer) {
    System.out.println(" You got it!");
} else {
    System.out.println("That is not correct");
    System.out.println("The correct answer is" + answer);
}

Автор добавил 1, чтобы гарантировать, что значение будет не меньше 1. nextInt(MAX) возвращает 0 в MAX-1. * +1008 *

2 голосов
/ 25 марта 2011
if (guess==answer); // looks like you threw an extra semicolon in here
        System.out.println (" You got it!");

Просто удалите точку с запятой, и все будет в порядке.

Помогите, пожалуйста, а также кто-то может объяснить эту строку answer = generator.nextInt (MAX) +1;почему автор из книги добавил 1?

generator.nextInt(MAX) сгенерирует случайное число от 0 до MAX, и автор хотел, чтобы оно было по крайней мере 1, поэтому он добавил 1 кэто.

2 голосов
/ 25 марта 2011

Эта строка является виновником:

if (guess==answer);

Удалить точку с запятой; он завершает весь оператор if.

1 голос
/ 25 марта 2011

Оператор if должен выглядеть следующим образом:

    if (guess==answer) {
        System.out.println (" You got it!");
    } else
    { 
        System.out.println("That is not correct");
        System.out.println("The correct answer is"+ answer);
    }

Случайное значение увеличивается, поскольку генератор случайных чисел создает случайные числа от 0 до MAX-1.

1 голос
/ 25 марта 2011

Вашему выражению if нужны скобки, а не точка с запятой.

1 голос
/ 25 марта 2011

у вас здесь ненужная точка с запятой

if (guess==answer);
0 голосов
/ 25 марта 2011
  1. Удалить смайоклон после состояние. Вам не обязательно иметь фигурные скобки, так как это только одно утверждение после условия. Если у вас их больше одного, вы должны включить фигурные скобки вокруг утверждений, которые у вас есть, в ваше условие else.

  2. Поиск случайного класса в Javadocs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...