如何在char数组中存储空格?

时间:2016-01-16 05:14:48

标签: java arrays

我正在编写Caesar Cypher程序,但我无法弄清楚如何在我的char数组中存储空间。这是我的加密方法

public static String encrypt(String msg, int shift)  {
    char[] list = msg.toCharArray();
    for (int i = 0; i < list.length; i++) {
        // Shift letter
        char letter = list[i];
        letter = (char) (letter + shift);
        if (letter > 'z') {
            letter = (char) (letter - 26);
        }
        else if (letter < 'a') {
            letter = (char) (letter + 26);
        }
        else if (letter == ' ') {
            letter = '\0';
        }
        list[i] = letter;
    }
    // Return final string.
    return new String(list);
}

4 个答案:

答案 0 :(得分:3)

从字面上看,你问题的答案是:

    list[i] = ' ';

但是,您编写的代码看起来相当破碎。提示:仔细考虑:

  • az范围内不是字母的字符会发生什么情况(小写!),

  • 此测试之前letter 会发生什么 - if (letter == ' ') { ...

答案 1 :(得分:1)

空格是一个类似于任何其他字母的字符:

char space[] = {' '};

myCharArray[i] = ' ';

答案 2 :(得分:0)

用于存储空格的ascii代码,然后将其与字符进行比较。此链接可能会帮助您

http://www.theasciicode.com.ar/ascii-printable-characters/space-ascii-code-32.html

答案 3 :(得分:0)

您有一个逻辑错误 - 您只应在应用班次后将字母与空格字符进行比较。你应该检查一下这个字符是否是一个空格,然后如果它是你要移动的字符之一(可能只是字母和数字),则只移动它。

修复后,您可以以与检查方式相同的方式存储它:

if ( letter == ' '){
    letter = ' ';
} else {
    //logic for shifting
}

虽然真的没必要。

更合适
if ( letter != ' '){
        //logic for shifting
}

真的非常,更合适的是:

if(shouldShift(letter)){
    //logic for shifting
}

shouldShift类似于:

public boolean shouldShift(char letter){
    return Character.isLetter(letter) || Character.isDigit(letter);
}