0 голосов
спросил от в категории Java
" ="- это назначение, а не сравнение:
while(numFound = false)
Try:
while(numFound == false)

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Оригинальный Грифф уже ответил на ваш вопрос. Позвольте мне улучшить ваше общее кодирование.

// all these sum, num, dum, can't you think something better? How about array? static int sum1; // You are using default value of sum1; clever but bad practice;  static int sum2 = 1; static int sum3 = 2; static int num1 = 3; static int num2 = 4; static int num3 = 5; static int dum1 = 6; static int dum2 = 7; static int dum3 = 8; public static int getNumbers() {     int holder;     boolean numFound = false;     holder = 1 + (int) (Math.random() * 9);     // even if you write the right syntax as OriginalGriff suggested. And your holder is not between 0-8; your function will stuck in an infinte loop. because holder is going to be always false     while(numFound = false)     {         if (holder == 0)         {             holder = 1;             if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)             {                // if your code reach here, you code will not reach else. common sense; but if you code do not reach here why do you think it will reach if of "else"?                 numFound = true;             }         } else {             if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)             {                 numFound = true;             }         }     }


Как решить? исправить несколько проблем
1. Как насчет объявления каждого числа, объявите тогда как массив
2. Переместите создание держателя внутри цикла while; поэтому, если условие if говорит false, оно будет регенерировать число
3. чтобы проверить, принадлежит ли номер массиву, либо напишите функцию, чтобы проверить, содержит ли массив ваш сгенерированный номер, либо вы можете использовать следующее предложение , описанный в stackoverflow
// all these sum, num, dum, can't you think something better? How about array? static int sum1; // You are using default value of sum1; clever but bad practice;  static int sum2 = 1; static int sum3 = 2; static int num1 = 3; static int num2 = 4; static int num3 = 5; static int dum1 = 6; static int dum2 = 7; static int dum3 = 8; public static int getNumbers() {     int holder;     boolean numFound = false;     holder = 1 + (int) (Math.random() * 9);     // even if you write the right syntax as OriginalGriff suggested. And your holder is not between 0-8; your function will stuck in an infinte loop. because holder is going to be always false     while(numFound = false)     {         if (holder == 0)         {             holder = 1;             if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)             {                // if your code reach here, you code will not reach else. common sense; but if you code do not reach here why do you think it will reach if of "else"?                 numFound = true;             }         } else {             if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)             {                 numFound = true;             }         }     }
# [#^ #]

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...