2011-01-01 7 views
1

Ich kann das überhaupt nicht herausfinden. Ich tat:Modulo Arithmetik in Java, Android-Problem

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); 

Monat ist heute Monat, Tag ist heute (d. 31. Dezember = 12,31). In ANdroid wird dies aus KALENDER genommen. Jetzt lief dieses Programm gut bis heute. 1. Januar Was passiert, ist, dass die DB nach einer Zeichenkette mit Indexnummer sucht, die vom Datum übernommen wurde. Das Problem ist nicht in der DB, es ist in diesem Code. 1. Januar ist Monat = 0, Tag = 1, natürlich, aber nach mod 134 ich, mit freundlicher Genehmigung von LogCat:

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

Aber 1mod134 = -29!. Ich kann nicht verstehen, woher -29 kommt.

Antwort

2

Wenn month0 ist, ist (month-1)*30-30.

2

Entschuldigung. Ich habe es fast gleich nach dem Posten herausgefunden. Monat = 0, also Monat -1 = -1. Ich nahm an, dass der Monat von 1 beginnen und zu 12 gehen würde, nicht Null zu 11. Sorry für die Verschwendung von jemandes Zeit!

+0

yep, ein obi-wan Fehler. mach sie jeden Tag selbst. –