Java Char到int,仅使用大写字母?
这个程序的目的是接收一个字符串,并将每个字母前进一个特定的数字,但它要在Z之后循环。所以a+14=O,但R+14=F和Z+14=N。我如何改变这一行,使它像那样工作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
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';