2012-03-08 2 views
-1

여기 내 코드의 어딘가에 작은 버그가 있습니다! 나는 정말로 그것을 발견하거나 파악할 수 없어서 눈이 멀어야합니다. 바이트 배열 목록이 있습니다. 각 배열의 마지막 요소뿐만 아니라 처음 두 요소를 파싱합니다. -16, -11 또는 -7 값을 얻으면 값을 유지하고 싶습니다. 어떤 이유로 어레이의 on의 마지막 값이 삭제되지 않습니다. 왜 이런 일이 일어나는 걸까요?구문 분석 문제! 논리의 버그

+1

문제를 쉽게 해결할 수 있도록 예제에서 누락 된 코드가 너무 많습니다. 예를 들어, 변수 "데이터"는 어디에서 왔습니까? 아마도 이것이 당신 문제의 근원이기도합니다 ...? –

+0

woops ... 그 목록입니다 ... 나는 그것을 추가하는 것을 잊어 버렸습니다. 머리를 주셔서 감사합니다. – BigBug

+0

이 코드는 어디에서 났습니까? –

답변

2

디버깅 해 보셨습니까? 따라서 data.add(b) 실행

if(b!= -15 && i + 2 < srec.length() && (Character.digit(srec.charAt(i + 2), 16) << 4) + Character.digit(srec.charAt(i + 3), 16) != -15 
       && (Character.digit(srec.charAt(i + 2), 16) << 4) + Character.digit(srec.charAt(i + 3), 16) != -11) 

b != 15 -> true 
i + 2 = 124 < srec.length() = 142 -> true 

(Character.digit(srec.charAt(i + 2), 16) << 4)+ Character.digit(srec.charAt(i + 3), 16) = -7 and -7 != -15 and also -7 != -11 

: 당신이 b = -110 이있을 때

는이 조건을 통과시켰다.

+0

나는 문제를 해결했다. 당신은 분명히 올바른 길을 가고 있었다. 그래서 thansks :) – BigBug