Java Char到int,仅使用大写字母?

Java Char到int,仅使用大写字母?,java,Java,这个程序的目的是接收一个字符串,并将每个字母前进一个特定的数字,但它要在Z之后循环。所以a+14=O,但R+14=F和Z+14=N。我如何改变这一行,使它像那样工作 private static char[] advanceArray(char[] array, int n) { int length = array.length; for (int i=0; i<length; i++){ if(array[i]!=' '){ char c

这个程序的目的是接收一个字符串,并将每个字母前进一个特定的数字,但它要在Z之后循环。所以a+14=O,但R+14=F和Z+14=N。我如何改变这一行,使它像那样工作

private static char[] advanceArray(char[] array, int n) {
    int length = array.length;
    for (int i=0; i<length; i++){
        if(array[i]!=' '){
        char ch = array[i];
        //ch += (char) ch+n;
        array[i]=ch;
        }
    }
    return array;
}
私有静态字符[]高级数组(字符[]数组,int n){
int length=array.length;

对于(inti=0;i我认为这应该适合你

private static char[] advanceArray(char[] array, int n) {
int length = array.length;
for (int i=0; i<length; i++){
    if(array[i]!=' '){
    int ch = (int)array[i];

    if(ch>96 && ch<123)
    {
        ch = ch-97;
        ch = ((ch+n)%26)+97;
    }
    else if(ch>64 && ch<91)
    {
        ch = ch-65;
        ch = ((ch+n)%26)+65;
    }

    array[i]=(char)ch;
    }
}
return array;
}

您可以检查结果值是否超过
Z
的ASCII值,如果是,则将剩余的位添加到
A
的值中进行舍入,例如:

private static char[] advanceArray(char[] array, int n) {
    int length = array.length;
    int aChar = 65;
    int zChar = 90;
    for (int i=0; i<length; i++){
        if(Character.isUpperCase(array[i])){
            char ch = array[i];
            int increment = ch + n; 
            ch = (char) (increment > zChar ? aChar + (increment - zChar - 1) : increment);
            array[i]=ch;
        }
    }
    return array;
}
私有静态字符[]高级数组(字符[]数组,int n){
int length=array.length;
int-aChar=65;
int-zChar=90;
对于(int i=0;i zChar?aChar+(增量-zChar-1):增量);
数组[i]=ch;
}
}
返回数组;
}

假设您只使用大写字母,只需使用模运算符%:

ch = (char) (ch + n - 'A') % 26 + 'A';

你是如何得到R+14=F的?
6=(18+14)%26
。从那里开始。我的想法是,我希望它接受R并将其转换为F,但我不完全确定如何做到这一点,因为在ch中添加int不会循环到Z后的A,而是转到[之后:ch+=(char)ch+n。你可以用另一个if语句来表示,如果ch>23或任何索引z是,ch-=23。这应该循环回到开头,这是一个…应该是
ch+=n;
private static char[] advanceArray(char[] array, int n) {
    int length = array.length;
    int aChar = 65;
    int zChar = 90;
    for (int i=0; i<length; i++){
        if(Character.isUpperCase(array[i])){
            char ch = array[i];
            int increment = ch + n; 
            ch = (char) (increment > zChar ? aChar + (increment - zChar - 1) : increment);
            array[i]=ch;
        }
    }
    return array;
}
ch = (char) (ch + n - 'A') % 26 + 'A';