java - Switch statement inside for loop does not increment "i" correctly -
i have following code:
string = sb.tostring(); //stores data input file string string replaceall = everything.replaceall("\\s", ""); int charcount = replaceall.length(); //charcount 147 char arr[] = replaceall.tochararray(); (int = 0; < arr.length; i++) { switch (arr[i]) { case 'e': { fridge[character.getnumericvalue(arr[(i + 1)])].is_empty(); } break; case 'f': { fridge[character.getnumericvalue(arr[(i + 2)])].find_it(character.getnumericvalue(arr[(i + 1)])); } break; case 'c': { fridge[character.getnumericvalue(arr[(i + 3)])].combinefridge(fridge[character.getnumericvalue(arr[(i + 2)])], fridge[character .getnumericvalue(arr[(i + 1)])]); } break; case 'm': { fridge[character.getnumericvalue(arr[(i + 3)])].commonitems(fridge[character.getnumericvalue(arr[(i + 2)])], fridge[character .getnumericvalue(arr[(i + 1)])]); } break; case 'i': { fridge[character.getnumericvalue(arr[(i + 2)])].insertitem(character.getnumericvalue((i + 1))); } break; case 'd': { fridge[character.getnumericvalue(arr[(i + 2)])].delete_item(character.getnumericvalue((i + 1))); } break; case 'o': { fridge[character.getnumericvalue(arr[(i + 1)])].outputrefrigerator(); } break; } } the char array has 147 elements, , there's number after each letter. each letter activates method, followed 1-3 parameters (numbers). however, inside loop, getting -1 value , random large numbers (all numbers positive , less 12).
if manually call method outside loop example: fridge[character.getnumericvalue(arr[0].insertitem(character.getnumericvalue(arr[1]);, works fine , value @ arr[1] (which 1) stored @ this.fridgeitems (an int[] array).
why happening? know it's problem either switch statement or loop can't tell.
check indices. in code accessing elements arr i + 1 , i + 2 index. if loop iterates more n - 2 times, have indexoutofboundexception.
by way, need increment i in switch statement skip "used" characters input array.
Comments
Post a Comment