2013-03-11 6 views
0

Напишите программу для генерации случайного числа от 1 до 100 и сохраните ее как секретный номер. Затем программа проверяет, может ли пользователь угадать секретный номер. Пользователь может продолжить гадание номера до тех пор, пока номер не будет найден или пользователь не сможет ввести 0, что приведет к прекращению работы программы.Создание угадывающей программы Java-программы

Каждый раз, когда пользователь делает предположение, программа сообщит, как показано ниже:

  1. Слишком высокая или слишком низкая (более 30 выкл)
  2. Высокий или низкий (от 10 до 30 баллов выкл)
  3. A Little High или A Little Low (менее 10 баллов от)

Если секретный номер 74, а пользователь вводит 26, программа будет печатать "слишком низкий". Если пользователь говорит 65, то программа будет печатать «A Little Low

Я застревание на если заявлениях, может быть, моя структура не является правильной. Я не уверен.

import java.util.Scanner; 
public class SecretNumber { 
    public static void main(String[] args){ 
     int random1, answer; 
     Scanner input = new Scanner(System.in); 

     random1 = (int)(Math.random()*10); 
     System.out.print(random1); 

     System.out.println("Guess the number"); 
     answer = input.nextInt(); 

     while(answer != 0) { 

      if (answer > (random1 + 30)){ 

       System.out.println("Way to high"); 
      } 
      else if (answer > (random1 - 30)){ 

       System.out.println("Way to low"); 

      } 
      else if (answer > random1 + 10 && answer < random1 + 30){ 

       System.out.println("High"); 

      } 
      else if (answer > random1 - 10 && answer < random1 - 30){ 

       System.out.println("Low"); 

      } 
      else if (answer > random1 + 10){ 

       System.out.println("A little high"); 
      } 
      else if (answer < random1 - 10){ 

       System.out.println("A little low"); 

      } 
      else if (answer == random1){ 

       System.out.println("That is correct"); 
       System.exit(0); 
      } 
      else { 
       System.out.println("Guess the number"); 
       answer = input.nextInt(); 
      } 
     } 
    } 
} 
+3

Какие у вас проблемы? Как это не получается, как вы ожидали? – iamnotmaynard

+1

Обратите внимание, что 'random1 = (int) (Math.random() * 10);' даст вам '0 <= random1 <10' – iamnotmaynard

+0

Ну, он застрял на самом первом, если утверждение либо говорит способ до максимума, либо способ низкий в бесконечном цикле –

ответ

2

Переместите линии, в которые вы получите входной сигнал из последнего блока else (но все еще в пределах вашего цикла), и он будет работать должным образом.

Причина, по которой вы хотите это сделать, состоит в том, что она снова входит в одно из предположений (например, «Слишком низкий уровень!»), а затем никогда не попадает в конечный результат, что приводит к бесконечному циклу.

while (answer !=0){ 

     // ommitted 

     else if (answer == random1){ 

      System.out.println("That is correct"); 
      System.exit(0); 
     } 

     System.out.println("Guess the number"); 
     answer = input.nextInt(); 
    } 
+0

Я сделал, что он остановил бесконечный цикл, но он все еще не работает правильно –

0

Я немного изменился и отформатирован таким образом, что я чувствую себя лучше, однако вы можете копировать и вставлять и переформатировать его по своему вкусу, я также удалил путь и просто изменил его на уровень ниже или выше, но вы можно добавить, что обратно, если вам нравится

/* 
*/ 
package randomnumbergame; 

import java.util.Scanner; 

public class Randomnumbergame 
{ 

public static void main(String[] args) 
{ 
    int random1, answer; 

    Scanner input = new Scanner(System.in); 

    random1 = (int)(Math.random()*100); 


    System.out.println("Guess the number I am thinking of, it is between 1 and a 100 or press 0 to quite"); 
    answer = input.nextInt(); 

    while(answer != 0) 
    { 

     if (answer > random1) 
     { 

      System.out.println("Your guess is to high"); 
     } 
     else if (answer > random1) 
     { 

      System.out.println("Your guess is to low"); 

     }   
     else 
     { 

      System.out.println("That is correct"); 

     } 

    System.out.println("Guess the number I am thinking of, it is between 1 and a 100 or press 0 to quite"); 
    answer = input.nextInt(); 

    } 
} 
} 

на другой ноте программа работает для меня, но независимо от того, что я, кажется, догадываюсь это обычно кажется, чтобы сказать мне, что я правильно = /, и я знаю математику. случайная часть правильная, потому что это то, что я использовал в классе сегодня, и это также то, что сказал мне мой инструктор.

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