我必须编写一个程序(方法很好,请原谅我的noobness),它有一个char数组作为输入,根据其ascii值将其转换为数字,将其转换为任何输入的移位值(可以是正数或负数) )是,然后解密它。
我的程序的问题是它几乎适用于整个数组,但是对于某些测试用例,最后几个字符都失败了。任何人都可以帮我指出我的逻辑缺陷吗?
例如,sgADF@#$5^^%{].
在解密后读取sgADF@#$5^^%{g3
(即].
替换为g3
)。
我很确定我的解密没问题。它只是将行数组(应该是char)输入到具有相反移位值的加密中。
//converts char values to numbers and stores them in hold array
for (int x = 0; x < line.length; x++) {
char character = line[x];
int ascii = (int) character;
hold[x] = ascii;
}
[![enter image description here][1]][1]//shift to numbers
for (int x = 0; x < line.length; x++) {
//case1
if (nshift < 0) {
while (hold[x] + nshift < THIRTY_TWO) {
nshift = nshift + NINETY_FIVE;
// nshift = copy of shift (checkstyle)
}
hold[x] = hold[x] + nshift;
}
//case2,
if (shift > 0) {
while (hold[x] + nshift > ONE_TWENTY_SIX) {
nshift = nshift - NINETY_FIVE;
// nshift = copy of shift (checkstyle)
}
hold[x] = hold[x] + nshift;
}
}
for (int x = 0; x < hold.length; x++) {
char digit = (char) hold[x];
out[x] = digit;
}
return out;