2015-06-22 2 views
0

Я просто пытаюсь создать GuessMyNumber игру и вот мой код:булево назначен, но никогда не обращались

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

public class classic { 
public static void main(String[] args) { 
    Random rand = new Random(); 
    boolean beaten = false; 
    int number; 
    int randn = rand.nextInt(99); 
    //System.out.println(randn); 
    System.out.println("What is my number? Guess it!"); 
    Scanner input = new Scanner(System.in); 
    int counter = 0; 
    int counter2 = 0; 
    while(beaten = true){ 
      number = input.nextInt(); 
      if (number == randn) { 
       System.out.println("Correct!"); 
       beaten = true; 
      } 
      if (number < randn) { 
       System.out.println(number + " is too low"); 
      } 
      if (number > randn) { 
       System.out.println(number + " is too high"); 
      } 
     } 
    } 
} 

В цикле в то время как я поставил beaten = true, но до сих пор, в то время как цикл продолжается

Что я делаю неправильно здесь?

+8

'while (beaten = true) {' '=' - оператор присваивания '==' - это сравнение. Используйте 'while (beaten == true)' или лучше, чтобы избежать таких проблем, как тот, который вы в настоящее время имеете 'while (beaten)' (или 'while (! Beaten)', если вы хотите 'while (beaten == false)') , – Pshemo

+3

Используйте 'while (! Beaten) {...}'. – aioobe

+0

@aioobe @Pshemo Ahh It Worked, но что означает '!'? – belkipAndroidness

ответ

2
while(beaten = true) 

Как = оператор присваивания, так true назначается в beaten первый, то while loop состояние становится,

beaten = true 
while(true) { 
//.... hence, loop executed. 
} 

Используйте оператор сравнения == для проверки состояния. Кроме того, не! Эксплуатация также может использоваться для boolean переменной.

Say,

beaten = true 

Тогда

while(!beaten) 

означает

while(!true) // read while not true 
//implies 
while(false) { 
//.... loop will not going to execute. 
} 
0
import java.util.Random; 
import java.util.Scanner; 

public class Guess { 
public static void main(String[] args) { 
    Random rand = new Random(); 
    boolean beaten = false; 
    int number; 
    int randn = rand.nextInt(99); 
    //System.out.println(randn); 
    System.out.println("What is my number? Guess it!"); 
    Scanner input = new Scanner(System.in); 
    int counter = 0; 
    int counter2 = 0; 
    while(beaten == false){ 
      number = input.nextInt(); 
      if (number == randn) { 
       System.out.println("Correct!"); 
       beaten = true; 
      } 
      if (number < randn) { 
       System.out.println(number + " is too low"); 
       counter++; 
      } 
      if (number > randn) { 
       System.out.println(number + " is too high"); 
       counter++; 
      } 
     } 
    System.out.print("It took you " + counter + " tries to gues the number"); 
    } 
} 

Теперь она работает. Вы сначала установили «избили» на false, чтобы он не работал, и я также изменил ваше условие while loop «beaten == false» вместо «beaten = false». Надеюсь, это поможет. Я не знал, что вы хотели делать со счетчиком, поэтому я просто добавил это в начало, чтобы подсчитать, сколько попыток потребовалось.

+0

Когда вы устанавливаете« boolean beaten = false », а затем ваш цикл while говорит« while (beaten = true) », он сделал код пропустите ваш цикл while – Jeff

+0

, почему «beaten == false» работает, логическое значение уже неверно, почему оно зацикливает его? – belkipAndroidness

+0

Вы не переопределяете «избили» как ложные, когда говорите «избили == ложь». Все, что делает, - это увидеть, является ли «избиение» ложным или истинным. поэтому «beaten == false» говорит, что в то время как избили равно false, тогда выполните цикл. «beaten = false» на самом деле означает, что вы устанавливаете «бит» равным false. Надеюсь, я ответил на то, что вы спрашиваете – Jeff

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