2 回答

TA貢獻1810條經驗 獲得超4個贊
我現在才意識到我的問題。該代碼將起作用,并將“A”更改為“B”。但是它可以繼續測試從 2 到 25 的 r 值,該表槽是否等于下一個數字。當然,它做到了。字符,現在是 'B',等于字母數組的索引 2,依此類推,直到它最終結束,變成 'Z'。我所要做的就是添加break;
到最后一個for
循環中。感謝您的幫助!

TA貢獻1843條經驗 獲得超7個贊
您添加的代碼將在 X=0 和 Y=0 時為“A”生成字母“Z”。我假設 [q] 和 [p] 等于 0
問題出在這里:
if(table[q][p] == alphabet[r]) {
table[q][p] = alphabet[(r+p+1)%26];
}
如果 table[0][0] 保存“A”值,則當 r 變量等于 25 時,此條件為真。因為在您的字母表數組中,“A”字母位于索引 25 下。然后:
table[q][p] = alphabet[(r+p+1)%26];
所以 table[0][0] 將等于字母表 [(25+0+1)%26] 并且 26%26 是 0。
table[q][p] = alphabet[0]
這是數組中的“Z”字母。
更新:試試這個:
Character[] alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
Character[][] table = {{'a', 'b'}, {'c', 'd'}, {'e', 'f'}};
for (int x = 0; x < table.length; x++) {
for (int y = 0; y < table[x].length; y++) {
int index = Arrays.asList(alphabet).indexOf(table[x][y]);
table[x][y] = alphabet[(index + y + 1) % 26];
}
}
添加回答
舉報