2017-01-30 3 views
1

Я блуждал, почему этот код ничего не распечатывает?Угадайте номер игры, но ничего не распечатывает

package Main; 

import java.util.Random; 
import java.util.Scanner; 

public class Counter { 

    public static void main(String[] args) { 

     Random rand = new Random(); 
     int numberOfTries = 0; 
     int numberToGuess = rand.nextInt(1000); 
     Scanner input = new Scanner(System.in); 
     int guess; 
     boolean win = false; 

     while (win = false) { 
      System.out.println("Guess a number between 0 and 1000"); 
      guess = input.nextInt(50); 
      numberOfTries++; 
      { 
       System.out.println("Number of Tries is " + numberOfTries); 
      } 

      if (guess == numberToGuess) { 
       System.out.println("You win"); 
       win = true; 
      } else if (guess < numberToGuess) { 
       System.out.println("Number is higher"); 
      } else if (guess > numberToGuess) { 
       System.out.println("Number is Lower"); 
      } 
     } 

    } 
} 
+0

Чтобы сделать сравнение, вам нужно использовать '==' operator: 'while (win == false) {...}'. 'win = false' присваивает' false' '' win', а затем вычисляет 'false'. Вот почему цикл никогда не выполняется. – misko321

+0

Я просто изменил его, как вы сказали, и я понимаю, почему (: Хотя он все равно ничего не печатает –

ответ

1

Существует ошибка в while заявлении, оно должно быть while (win == false). Один = действует как оператор присваивания и, следовательно, возвращает то же значение присвоения (false). Правильный логический оператор для проверки равенства равен ==.

+0

Пожалуйста, отредактируйте свой ответ и объясните разницу между '=' и '=='. – CraigR8806

+0

Я просто изменил его, как вы сказал (а): ( Хотя он все еще ничего не печатает –

0

Изменить

while (win = false) // this is not a logical operator 

в

while (win == false) // this is 

Кроме того, обратите внимание, вы можете ввести в заблуждение

rand.nextInt(50); // generates a random number within the bound = 50 

с

guess = input.nextInt(50); // expects the user input which should be of type int using radix 50 

Таким образом, вы должны изменить это

guess = input.nextInt(); 
+0

Я изменил == детали Хотя он все равно не будет печатать Я не совсем понимаю, что вы подразумеваете под остальными, так как кажется как это уже было, я установил его (: –

+0

@HobieObarzanek, пожалуйста, пройдите обновленный ответ – nullpointer

+0

Даже если я тоже изменю эту часть, ничего не произойдет –

0

Ваш код имеет две проблемы. = в while (win = false) { является оператором присваивания, а не логическим оператором. Вместо этого вы должны иметь

while (win == false) { 

Во-вторых, метод nextInt в Scanner классе не принимает аргумент. Удалите 50 из guess = input.nextInt(50);

guess = input.nextInt(); 

я смог запустить программу после этих двух модификаций.

+0

Спасибо f или помощь, но где вы пишете свое предположение? И хотя я его удалял, он все равно ничего не печатает –

+0

Это зависит от того, как вы используете свой код. Я поместил вашу программу в Eclipse и смог взаимодействовать с ней в представлении «Консоль». Если вы используете его в командной строке, вы должны будете ввести свои догадки прямо в окне после запуска команды для запуска программы. – nvioli

+0

Ваш код работает; Я боюсь, что ваша проблема - непонимание того, как запустить java-программу. Что вы делаете, чтобы запустить его? Какую программу вы открываете на своем компьютере, что вы нажимаете или набираете, что, по вашему мнению, должна запускать программу? – nvioli

Смежные вопросы