2016-09-19 2 views
-4

У меня возникли проблемы с моей функцией остатка, неправильно рассчитанной. Я пытаюсь написать программу, которая сообщает пользователю, какие целые числа делятся на (2-9) после ввода числа. У меня возникли проблемы с этим, если оператор всегда работает независимо от того, соответствует ли число состояние или нет:Остаток в java неверно вычисляется

int five; 

    five = digit % 5; 

    if (five == 0) 
    { 
     System.out.println("This number is divisible by five!"); 
    } 
    else { 

    } 

    System.out.println(five); 

Я также добавил Println заявление, чтобы увидеть, что пять выходил, как и когда я вошел в номер 36, он дал мне остаток 0, который должен быть 1. Я также пробовал с этим форматированием:

int five; 

    //five = digit % 5; 

    if (digit % 5 == 0) 
    { 
     System.out.println("This number is divisible by five!"); 
    } 
    else { 

    } 

    System.out.println(five); 

И еще имея те же результаты.

+2

Нам нужно увидеть больше кода. Что такое * тип * цифры? – Bathsheba

+1

Можете ли вы разместить [mcve], пожалуйста? – khelwood

+0

[Похоже, что если не всегда работает со мной] (http://ideone.com/NhjET1). –

ответ

0
public static int remainder(int dividend, int divisior){ 
      int remainder = dividend%divisior; 
      if(remainder==0){ 
       System.out.println("no remainder"); 
       return remainder; 
      } 
      else{ 
       System.out.println("Remainder is =>"+remainder); 
       return remainder; 
      } 
     } 
+0

@bordia plz проверить выше код и пусть это сработает для вас? – Roushan45

+0

Да, это сработало! Спасибо! – bordia

0

Все в порядке с помощью оператора java modulo, поверьте мне. Попробуйте установить переменную digit вручную и проверить результат, все будет хорошо. Вероятно, проблема заключается в том, что вы вводите значение с клавиатуры и конвертируете его каким-то неправильным способом, тем самым изменяя переменную и в то же время - остаток. Если это так просто использовать:

Scanner sc = new Scanner(System.in); 
int digit = sc.nextInt(); 

Кроме того, ваш второй путь не собирается печатать ничего, вы не инициализировать five в любом месте.

+0

Я инициализировал пять, но Эран отредактировал его, чтобы он не появился. Я все понял. Глупая ошибка с моей стороны. – bordia