2011-01-01 3 views
1

Я не могу понять это вообще. Я сделал:Modulo Arithmetic в Java, проблема с Android

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, естественно, но после того, как мод 134 я получаю, любезно LogCat:

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

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

ответ

2

Когда month является 0, (month-1)*30 является -30.

2

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

+0

yep, obi-wan ошибка. сделайте их каждый день сам. –