Арифметика по модулю в Java, проблема Android - PullRequest
1 голос
/ 01 января 2011

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

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 это взято из КАЛЕНДАРЯ. Теперь эта программа работала нормально до сегодняшнего дня. 1 января Что происходит, БД ищет строку индекса num, взятую из даты. Проблема не в БД, а в этом коде. 1 января - месяц = ​​0, день = 1, естественно, но после мода 134 я получаю, любезность LogCat:

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

Но 1mod134! = -29. Я не могу понять, откуда взято -29.

Ответы [ 2 ]

2 голосов
/ 01 января 2011

Когда month равно 0, (month-1)*30 равно -30.

2 голосов
/ 01 января 2011

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

...