Что значит строка int guess = -1?

183
09 января 2019, 09:40

Вот мой код, взял с одной книги:

int num = (int)(Math.random()*101);
System.out.println("Guess a magic number from");
int guess = -1;
while(guess != num){
    System.out.print("\nEnter your guess: ");
    guess = input.nextInt();
    if(guess == num)
        System.out.println("You got it!");
    else if(guess > num)
        System.out.println("Your guess is too high!");
    else
        System.out.println("Your guess is too low!");
    }

Хочу узнать, что значит эта строка: int guess = -1;. Скажите, пожалуйста, что значит -1 и зачем эта строка!

Спасибо!

Answer 1

В вашем конкретном случае значение -1 для переменной guess указано для того, чтобы на стадии определения входящих условий для цикла while() получить 100% вхождение в цикл. Если вы посмотрите на код выше, то увидите как генерируется значение для переменной num. Варианты получаются от 0 до 100 включительно. Следовательно, необходимо указать значение не входящее в этот диапазон. Вы можете с лёгкостью изменить -1 на любое в диапазоне от -2^31 до 2^31 и не входящее в диапазон генерируемых значений num. При этом логика работы вашего кода не изменится.

Answer 2

Первоначально генератор случайных чисел генерирует какое-то число в диапазоне от 0 до 100 включительно. Пользователю в цикле предлагается угадать это число. Если пользователь не угадал, то выводится соответствующая подсказка, а если угадал, то при следующей проверке условие цикла guess != num оказывается ложным и цикл прекращает выполнение.

В этой проверке и далее в цикле используется переменная guess. Всякая переменная к моменту ее использования должна иметь какое-то значение, определяемое ее инициализацией -- переменная не должна иметь неопределенного значения, иначе неопределенным будет поведение программы, что недопустимо. Язык Java просто не позволяет использовать неинициализированные переменные -- компилятор будет ругаться и не скомпилирует.

Так что переменной guess должно быть присвоено какое-то значение. Но чтобы цикл случайно не прекратил выполнение, не начав его, это значение должно быть таким, каким заведомо не может обладать к этому моменту переменная num -- то есть любым значением, меньшим, чем 0 или большим, чем 100. Любым. Автору понравилось -1, но вы точно с таким же успехом можете написать там 101 или 1234567890.

READ ALSO
Идея для Java-проекта [закрыт]

Идея для Java-проекта [закрыт]

У меня есть команда из 4 участников и один менторНам нужен проект, который будет затрагивать темы (желательно все):

184
RecyclerView при нажатии на конкретный элемент открывается другой RecyclerView

RecyclerView при нажатии на конкретный элемент открывается другой RecyclerView

Я разрабатываю приложение под Android, и столкнулся с очень трудной задачейУ меня есть фрагмент содержащий RecyclerView который содержит изображения(примерно...

163