对于情况1,在“ a”上加2表示“ c”。
我该如何编写程序,以便在“ z”上加2给出“ b”作为输出,而从“ a”上减去3给出“ x”作为输出?
换句话说,我只想要字母字符作为输出。无论您要在字符上增加或减去多少,我总是希望输出在a和z之间(含)。
case #1
public void addNumberToCharacter{
char character = 'a' + 2;
System.out.println(character); // 'c'
}
case #2
public void addNumberToCharacter{
char character = 'z' + 2;
System.out.println(character); // 'b'
}
case #3
public void addNumberToCharacter{
char character = 'a' - 3;
System.out.println(character); // 'x'
}
答案 0 :(得分:2)
加或减后,请纠正:
character = (character + 26 - 'a')%26 + 'a';
Java的x%y运算符给出x的整数除以y的余数。减去“ a”会得到小写字母开头的偏移量,然后再加上26可以保证为正数,前提是您添加的偏移量不小于-26或不大于+26。
答案 1 :(得分:2)
要处理两种情况,您可能还需要:
这是您可以参考的方法:
private static void addNumToChar(int a, char c0) {
char c = 'a';
if(Character.isUpperCase(c0)) {
c = 'A';
}
while (a < 0) a += 26;
char c1 = (char) (c + (c0 - c + a) % 26);
System.out.println(c1);
}
按如下所示运行测试:
addNumToChar(2, 'B'); // D
addNumToChar(2, 'b'); // d
addNumToChar(261, 'B'); // C
addNumToChar(261, 'b'); // c
addNumToChar(-2, 'B'); // Z
addNumToChar(-2, 'b'); // z
addNumToChar(-261, 'B'); // A
addNumToChar(-261, 'b'); // a
答案 2 :(得分:1)
public char number(int num, char c){ // -- num =29, char= 'd'
int n = c - 96 ; // n = 4
n = n+(num%26); // n = 4 + 3 = 7
if(n > 26){ return (char)(n-26); } // doesnot follow
else if(n < 0){ return (char)(n+26); } // doesnot follow
else { return (char)(n); } // return g
}
您可以尝试此方法。它可以处理正数和负数。
答案 3 :(得分:0)
使用其中一个:-
public static void main(String[] args) {
char c= 'a' - 1;
if(!(c>=97 && c<=122)) {
if(c>=123)
c= (char) (c-26);
else
c= (char) (c+26);
}
System.out.println(c);
}