在字符之间添加/减去大数

时间:2018-07-20 06:05:01

标签: java

对于情况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'
}

4 个答案:

答案 0 :(得分:2)

加或减后,请纠正:

character = (character + 26 - 'a')%26 + 'a';

Java的x%y运算符给出x的整数除以y的余数。减去“ a”会得到小写字母开头的偏移量,然后再加上26可以保证为正数,前提是您添加的偏移量不小于-26或不大于+26。

答案 1 :(得分:2)

要处理两种情况,您可能还需要:

  1. 大写和小写;
  2. 绝对值大于 26 的加/减数字;

这是您可以参考的方法:

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);
}