Арифметика по модулю в Java, проблема Android

1

Я не могу понять это вообще. Я сделал:

int num = ((month-1)*30+day)%134;
              //a,b,c are just for the Log
        String a = String.valueOf(num);
        String b = String.valueOf(month);
        String c = String.valueOf(day);

        Log.v("variables",a+","+b+","+c);
        num ++;// don't want zero
        String stringnum = String.valueOf(num);
        Log.v("Index",stringnum);

месяц - это сегодняшний день, сегодня день (т.е. 31 декабря = 12,31). В ANdroid это берется из CALENDAR. Теперь эта программа отлично работает до сегодняшнего дня. 1 января. Что происходит, так это то, что DB ищет строку индекса num, взятую с даты. Проблема не в DB, ​​ее в этом коде. 1 января - месяц = ​​0, день = 1, естественно, но после mod 134 я получаю любезность LogCat:

01-01 12:07:38.554: VERBOSE/variables(6917): -29,0,1

Но 1mod134!= -29. Я не могу понять, откуда происходит -29.

Теги:
date
modulo

2 ответа

2
Лучший ответ

Если month - 0, (month-1)*30 - -30.

2

К сожалению. Я понял это почти сразу после публикации. месяц = ​​0, поэтому месяц -1 = -1. Я предположил, что месяц начнется с 1 и дойдет до 12, а не с нуля до 11. Извините за то, что потратил впустую никого!

  • 0
    Да, ошибка Оби-Вана. Сделай их каждый день сам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню