2014-02-12 2 views
0
Scanner input = new Scanner(System.in); 
Random random = new Random(); 
System.out.print("Enter a number u wish(1-1000): "); 
int unos = input.nextInt(); 
int rand = random.nextInt(1000) + 1; 
System.out.println(rand); 
if (unos = random) { 
    System.out.printf("Congratz u won"); 
} 
while (unos < rand) { 
    System.out.println("Your number is lower \t Try again: "); 
    unos = input.nextInt(); 
} 
while (unos > rand) { 
    System.out.println("Your number is higher\t Try again: "); 
    unos = input.nextInt(); 
} 

Итак, если я нахожу числа, не равные произвольно сгенерированному числу, это работает, но как только я ударил, он не выводит «Congratz u won». Он просто заканчивается. Зачем?Лотерея - угадайте правильный номер

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

public class Lutrija { 

    public static void main(String []args){ 
     Scanner input = new Scanner(System.in); 
     Random random = new Random(); 
     System.out.print("Uneti broj koji mislite da ce ispasti(1-1000): "); 
     int unos=input.nextInt(); 
     int rand =random.nextInt(1000)+1; 
     System.out.println(rand); 
     while (unos!=rand){ 
      if(unos==rand){ 
       System.out.println("Congratz"); 
      } 
      else if (unos>rand){ 
       System.out.println("broj je veci od izvucenog"); 
       unos=input.nextInt(); 
      } 
      else if (unos<rand){ 
       System.out.println("broj je manji od izvucenog"); 
       unos=input.nextInt(); 
      } 
     } 
    } 
} 

Это не работает, почему?

+2

Не используйте 'printf()', если вы не используете спецификаторы формата (например, '% s,% f, ...') – Christian

+1

Это ваш настоящий код? Я спрашиваю, потому что вы утверждаете, что можете запустить его, в то время как я не могу его скомпилировать, потому что '(unos = random)' будет возвращать 'int' вместо' boolean' (если сравнивать 'int' с' Random' было бы возможно). Какую версию Java вы используете? – Pshemo

+0

Отлично, вы исправили '=='. Теперь исправьте петли. –

ответ

5

Вы используете назначение = вместо теста равенства == в инструкции if. Изменить на:

while ((unos = input.nextInt()) != rand) { 
    // Tell them higher of lower 
    // No need to call input.nextInt() in loop body as it is called 
    // when reevaluating while condition 
} 
// Congratulate them since to get here, unos == rand 

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

+1

, который я слушал, но theres ошибка в коде ur, это не будет работать, потому что в цикле while это не получится, если (unos == rand) in while (unos! = rand) { if (unos == rand) { – user3299707

+0

@ user3299707 он будет пропустить его, если случайно 'unos == rand' при инициализации ваших переменных. Я рекомендую установить начальное значение unos на что-то гарантированное, отличное от -1 и имеющее ввод целого числа в цикле while. – xlm

+0

@ user3299707 True. Переместить 'if (unos == rand) {(System.out.println (« Congratz »);}' из цикла и избавиться от 'if', потому что теперь он будет лишним. Также' do {read()} while (x! = y) 'представляется более подходящим здесь, чем' read(), тогда как (x! = y) {tests ,,, readAgain()} '. – Pshemo

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