2017-02-02 12 views
-4

Итак, я попытался развить функцию одним способом, но после нескольких неудачных тестов я создал другой способ, но он не генерирует то, что я ищу. Теперь я сосредоточен только на «Easy Division». T Выходы на выходе выглядят как 7/2; 9/9; 9/8; 5/2;, и то, что я хочу, - это такие подразделения, как 9/9; 9/1; 6/3; 6/2 ;. С Остаток 0 сотрудников. Надеюсь, вы можете мне помочь, и извините за мой ржавый английский.Как я могу сгенерировать операцию деления, в которой его результат будет иметь остаток 0 (ноль)? JAVA/Android

void generateDivisionOperation(String dificult){ 
    int n1, n2, aux; 
    if(dificult == "Easy"){ 
     n1 = generateEasyNumber(); 
     do{ 
      aux = generateEasyNumber(); 
      if(remainderCalculatedBetween(n1,aux) != 0) 
       aux = generateEasyNumber(); 
     }while (remainderCalculatedBetween(n1,aux) != 0); 
       n2 = aux; 
       textViewOperacaoN1.setText(String.valueOf(n1)); 
       textViewOperacaoN2.setText(String.valueOf(n2)); 
    }else{ 
     n1 = generateHardNumber(); 
     do{ 
      n2 = generateHardNumber(); 
     }while(n2 > n1 && n1%n2!=0); 
      textViewOperationN1.setText(String.valueOf(n1)); 
      textViewOperationN2.setText(String.valueOf(n2)); 
    } 
} 

int generateEasyNumber(){ 
    int n1; 
    int rangeEN = (9 - 1) + 1; 
    n1 = (int) (Math.random() * rangeEN) + 1; 
    return n1; 
} 

int generateHardNumber(){ 
    int n2; 
    int rangeHN = (99 - 10) + 1; 
    n2 = (int) (Math.random() * rangeHN) + 1; 
    return n2; 
} 

int remainderCalculatedBetween(int n1, int n2){ 
    int remainder; 
    remainder = n1 - n2*(int)(n1/n2); 
    return remainder; 

} 
+2

** ЧТО? ** что вы пытаетесь сделать? – OBX

+0

im пытается сгенерировать разделение между двумя сгенерированными числами, оставшаяся часть результата равна нулю – volkel

+0

'dificult ==" Easy "' является неправильным способом сравнения строк. Используйте 'dificult.equals (« Easy »)'. – shmosel

ответ

2

Использовать по модулю знак% eg.g. 10 % 3 is 1

+0

Уже используется, но он продолжает появляться в дивизионе вроде 7/4. В любом случае спасибо. – volkel

0

java предоставляет оператор «%» (модуль), чтобы найти остаток. так что 'если' заявление можно переписать в виде:

если

+0

Уже используется, но он продолжает появляться как 7/4. В любом случае спасибо. – volkel

+0

if (dificult == "Easy") { do { n1 = generateEasyNumber(); aux = generateEasyNumber(); } while ((n1% aux)! = 0); n2 = aux; textViewOperacaoN1.setText (String.valueOf (n1)); textViewOperacaoN2.setText (String.valueOf (n2)); } изменить код, как указано выше, поможет? – Sneha

+0

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

0
if(dificult.equals("Easy")){ 
    n1 = generateEasyNumber(); 
    do { 
     aux = generateEasyNumber(); 
    } while (n1 % aux != 0); 
    n2 = aux; 
    textViewOperacaoN1.setText(String.valueOf(n1)); 
    textViewOperacaoN2.setText(String.valueOf(n2)); 
} 

Это работает ((n1% посыла) = 0!). Я пробовал это сам. Удалить: if (остатокCalculatedBetween (n1, aux)! = 0) aux = generateEasyNumber();

Заменить == "Easy" с .equals("Easy")

и заменить remainderCalculatedBetween(n1, aux) с n1% Окс;

Это не работает для вас, возможно, вы не пропустите "Easy" функции.

+0

, но он продолжает появляться 6/4; 8/6 ... – volkel

+0

@volkel отредактировал мой ответ –

+0

Ok @howdoidothis Спасибо за усилия, попробовал ваш ответ сейчас, это все еще не показывает, что я ищу. Сбой должен быть чем угодно, а не этой функцией. – volkel

0

Ну, проблема была в другом месте программы, так как @Mehmet Kologlu сказал, что версия верна. Прошу прощения за ответ. Уже работает без проблем.

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