Java логический, если вопрос - PullRequest
0 голосов
/ 03 мая 2011

Я делаю программу лотереи, где я спрашиваю, хотят ли они в основном билет быстрого выбора. Числа для их билета, конечно, будут случайными, так как это быстрый выбор, но первые четыре числа варьируются от 0 до 9, а пятое число поднимается только до 0-4. Я пытаюсь попросить их ввести такую ​​кнопку, как «1» для «нет» или «2» для «да», если они не хотят, то этот шаг будет пропущен. Но я делаю булеву часть неправильно, хотя. Может ли кто-нибудь помочь мне?

Вот пример

System.out.println("Do you want Quick pick, 1 for no or 2 for yes?  The first four numbers is from a separate set of 0 to 9 and the fifth number is from a set of 0 to 4.");
QuickPick=keyboard.nextInt();
if((QuickPick==1)){
    return false;
}
if((QuickPick==2)){
    return true;
    int n = (int)(Math.random()*9+0);
System.out.println("Your QuickPick numbers are: " + kickerNumbers + kickerPowerball);
}

Я до сих пор не удосужился составить строку кода для конечного числа 0-4, только первые четыре числа, поэтому я не забыл об этом.

Ответы [ 4 ]

2 голосов
/ 03 мая 2011

Ваш код для случая 2 немедленно выполняет return true;, который завершает метод (я полагаю, что это метод) прямо здесь и сейчас.Ваши остальные строки вообще не выполняются.

Подумайте об использовании здесь оператора switch(), это облегчит чтение:

switch(QuickPick)
{
   case 1:
      return false;
   case 2:
      int n = (int)(Math.random()*9+0); // Why is n here? You don't do anything with it?
      System.out.println("Your QuickPick numbers are: " + kickerNumbers + kickerPowerball);
      return true;
   default:
      // Uh oh - someone did something bad maybe just return false?
      return false; 
}

Также ваш код для случая 2это определенно неправильно, вам нужно сгенерировать всего пять чисел, используя границы 0-9 для первых 4 и 0-4 для последнего.Вы можете использовать Java Random, чтобы сделать это (не Math.Random) что-то вроде:

Random rand = new Random();
int somethingRandom = rand.nextInt(10); 
// Will give you an integer value where 0 < val < 10
// You can call rand.nextInt as many times as you want

Чтобы не делать вашу домашнюю работу за вас - я буду следовать типичной строке учебника по CS исказать «Реализация оставлена ​​как упражнение».

1 голос
/ 03 мая 2011

Код после возврата true не будет выполнен - ​​его нужно поставить перед оператором возврата

0 голосов
/ 30 июня 2016

if((QuickPick==2)){ return true; int n = (int)(Math.random()*9+0); System.out.println("Your QuickPick numbers are: " + kickerNumbers + kickerPowerball); }

В приведенном выше коде из вашего вопроса я вижу, что вы будете получать ошибки компиляции в вашей IDE.Ваша IDE будет жаловаться на «Недоступный код» для строки, которая находится чуть ниже оператора возврата.Итак, вам нужно поместить оператор return в конец блока if.

0 голосов
/ 03 мая 2011

Как сказал Марво, вы бросили скобку в свой if.

Но у вас также есть неверная логика. Я не совсем уверен, какова цель используемого вами метода (который возвращает логическое значение). Но ваши последние несколько строк никогда не будут достигнуты, если пользователь не наберет что-то вроде 3 или 42.

Предполагая, что метод должен a) Спросить, хочет ли пользователь Быстрый выбор б) Рассчитать Быстрый выбор, если необходимо c) Вернуть истину / ложь в зависимости от того, произошел быстрый выбор или нет, вы должны иметь:

public boolean doQuickPick()
{
    System.out.println("Do you want Quick pick, 1 for no or 2 for yes?  The first four numbers is from a separate set of 0 to 9 and the fifth number is from a set of 0 to 4.");
    QuickPick=keyboard.nextInt();
    if((QuickPick==1)){
        return false;
    }
    if((QuickPick==2)){
        int n = (int)(Math.random()*9+0);
        System.out.println("Your QuickPick numbers are: " + kickerNumbers + kickerPowerball);
        return true;
    }
}

Как отдельная проблема, было бы лучше разбить ее на несколько методов. boolean yesNoPrompt(String message), generateQuickPick() и т. Д.

Ваш вопрос неясен, так что, боюсь, я не могу помочь вам больше. Публикуйте любые разъяснения / дополнительные вопросы, если они у вас есть.

...