2014-03-13 190 views
0
public int countMatchesWithRightShift(DNAStrand other, int shift){ 

    for (j = 0; j < (data.length()); ++j){ 
     other.data.charAt(j = other.data.charAt(j)+shift); 
    } 
     for (i = 0; i <other.length()-data.length(); ++i){ 

    if (other.data.charAt(i) == 'T' && data.charAt(i) == 'A'){ 
     rightShift++; 
    } 
    else if (other.data.charAt(i) == 'A' && data.charAt(i) == 'T'){ 
     rightShift++; 
    } 
    else if (other.data.charAt(i) == 'C' && data.charAt(i) =='G'){ 
     rightShift++; 
    } 
    else if (other.data.charAt(i) == 'G' && data.charAt(i) =='C'){ 
     rightShift++; 
    } 
} 

    return rightShift; 
} 

這是爲了比較兩個不同的DNA鏈在一個被移動一個int值之後。 當我運行specchecker給我們的測試不斷給我出界的錯誤。林不知道我做錯了java.lang.StringIndexOutOfBOundsException錯誤我做錯了什麼

+0

哪一行是錯誤發生? – mig

+0

很難從提供的信息中看到。你可以發佈堆棧跟蹤和/或其他代碼嗎?但正如標題所暗示的,我認爲其他數據的長度比您期望的要小。 –

+0

爲什麼被標記爲JavaScript? –

回答

1

此行是不可靠的

other.data.charAt(j = other.data.charAt(j)+shift); 

你的意思做

other.data.charAt(j) = other.data.charAt(j)+shift; 

設置字符串中的字符的值以及這也不是儘可能字符串是不可變

嘗試

String other.data = other.data.substring(0,j) + other.data.charAt(j)+shift 
         +other.data.substring(j + 1); 

//索引關閉的警告測試(這裏沒有IDE)