ascii shift程序几乎适用于整个字符串

时间:2018-02-02 14:49:13

标签: java loops intellij-idea ascii caesar-cipher

我必须编写一个程序(方法很好,请原谅我的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;

shows tests cases enter image description here

0 个答案:

没有答案