Почему эта арифметика равна 10, а не 0 с модом в Java - PullRequest
1 голос
/ 29 февраля 2012

Я работаю над старым экзаменом для теста, и этот код печатает значение 10 для longVariable. Теперь, для меня вручную, математика пошла бы 9 + 1% 10 = остаток от 0, а не 10 ... Как я ошибаюсь в этом?

Спасибо за помощь!

 public class ExamSectionA
{
    public static void main(String[] args)
{
    int intVariable1 = 9;
    int intVariable2 = 10;
    double doubleVariable = 11.2;
    char charVariable = 'A';
    long longVariable;
    longVariable = intVariable1 + 1 % intVariable2;
    intVariable2 = (int) (doubleVariable / 10f);
    String[] theirSalary = {"10","20","30","40"};
    System.out.println(intVariable2);
    System.out.println(longVariable); 
}
}

РЕДАКТИРОВАТЬ: PEMDAS. Думаю, я понял.

Ответы [ 3 ]

14 голосов
/ 29 февраля 2012

Смотрите ваш порядок операций:

intVariable1 + 1 % intVariable2;

есть:

intVariable1 + (1 % intVariable2);

То есть 9 + 1 % 10 анализируется как 9 + (1 % 10). Что дает 9 + 1 = 10.

% имеет более высокий приоритет, чем +.

3 голосов
/ 29 февраля 2012
Оператор

% имеет более высокий приоритет, чем +.Для получения дополнительной информации перейдите здесь

Corrected code: (intVariable1 + 1) % intVariable2;
1 голос
/ 29 февраля 2012

Вы имели в виду вместо (9+1) % 10?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...