“转换字符”;a「;使用java函数对0进行编号

“转换字符”;a「;使用java函数对0进行编号,java,Java,所以我正在学习函数和方法,并尝试创建一个函数,它允许我用数字替换字母,因此“a”将是0,“b”将是1,依此类推。我一点也不懂ascii,只创建了一个很长的if,else语句,但我甚至不知道我是否在正确的轨道上。我试图找到一种方法来创建一个函数,而不必使用长的条件语句和更少的代码行 这是我写的带有建议的新代码: 公共类密码{ /* * create function that converts a letter to a number * ex. a -> 0, b -> 1, e

所以我正在学习函数和方法,并尝试创建一个函数,它允许我用数字替换字母,因此“a”将是0,“b”将是1,依此类推。我一点也不懂ascii,只创建了一个很长的if,else语句,但我甚至不知道我是否在正确的轨道上。我试图找到一种方法来创建一个函数,而不必使用长的条件语句和更少的代码行

这是我写的带有建议的新代码:

公共类密码{

/*
 * create function that converts a letter to a number
 * ex. a -> 0, b -> 1, etc...
 */
static char letterToNumber (char firstLetter){
    if (firstLetter < 'a' || firstLetter > 'z') {
}
    return firstLetter;
}
static int numberToLetter (int firstNumer){
    if (firstNumber < '0' || firstNumber '25'){ 
    }
    return firstNumber;
}
public static void main(String[] args) {
    char a = 0;
    // TODO Auto-generated method stub
    System.out.println (letterToNumber (a)); //suppose to compile to convert a -> the number 0
    System.out.println(numberToLetter (1)); //compile to convert 1 -> the letter b
}
/*
*创建将字母转换为数字的函数
*例如a->0,b->1等。。。
*/
静态字符LetterTonNumber(字符第一个字母){
如果(第一个字母<'a'|第一个字母>'z'){
}
返回第一封信;
}
静态整数字母(整数首字母){
如果(firstNumber<'0'| | firstNumber'25'){
}
返回第一个数字;
}
公共静态void main(字符串[]args){
字符a=0;
//TODO自动生成的方法存根
System.out.println(letterToNumber(a));//假设编译以转换a->数字0
System.out.println(numberToLetter(1));//编译以转换1->字母b
}
}值
0
为48,
a
为97,
a
为65。因此,要将小写字母转换为0,需要减少49和大写字母17。这同样适用于
B/B
和1、C/C和2等

int smallChar = 'a' - 49; // equal 0
int capitalChar = 'A' - 17; // equal 0
0
的值为48,
a
的值为97,
a
的值为65。因此,要将小写字母转换为0,需要减少49和大写字母17。这同样适用于
B/B
和1、C/C和2等

int smallChar = 'a' - 49; // equal 0
int capitalChar = 'A' - 17; // equal 0

最简单的方法就是减去文字
'a'
。。。这将隐式地将您的输入字母和
'a'
转换为
int

public int convert(char letter) {
    if (letter < 'a' || letter > 'z') {
        throw new IllegalArgumentException("Only lower-case ASCII letters are valid");
    }
    return letter - 'a';
}
公共整数转换(字符字母){
如果(字母<'a'|字母>'z'){
抛出新的IllegalArgumentException(“只有小写ASCII字母有效”);
}
回信-‘a’;
}

这个解决方案的好处在于它“显然是正确的”(假设字母“a”到“z”在UTF-16中是连续的)。您不需要包含任何神奇的整数值。

最简单的方法就是减去文字
'a'
。。。这将隐式地将您的输入字母和
'a'
转换为
int

public int convert(char letter) {
    if (letter < 'a' || letter > 'z') {
        throw new IllegalArgumentException("Only lower-case ASCII letters are valid");
    }
    return letter - 'a';
}
char letter = 'a';
int letterAscii = (int)c;
int asciiOffsetOfA = 97;
int positionInAlphabet=letterAscii-asciiOffsetOfA;
公共整数转换(字符字母){
如果(字母<'a'|字母>'z'){
抛出新的IllegalArgumentException(“只有小写ASCII字母有效”);
}
回信-‘a’;
}
这个解决方案的好处在于它“显然是正确的”(假设字母“a”到“z”在UTF-16中是连续的)。您不需要包含任何魔法整数值

char letter = 'a';
int letterAscii = (int)c;
int asciiOffsetOfA = 97;
int positionInAlphabet=letterAscii-asciiOffsetOfA;
将其与输入字符串上的String.ToCharray()和String.toLowerCase()组合使用


在输入字符串上结合使用String.tocharray()和String.toLowerCase()。

因此,您应该了解ASCII。事实上,您应该学习Unicode,但要从ASCII开始。如果您了解什么是
char
,并且可以将其用于算术,那么该操作非常简单。因此,您应该了解ASCII。事实上,您应该学习Unicode,但要从ASCII开始。如果您了解什么是
char
,并且可以将其用于算术,那么该操作非常简单。因此,这也应该反过来工作。获取一个数字并将其转换为字母?@neme0025:是的,但需要显式转换才能将加法结果转换回char:
char letter=(char)('a'+number)谢谢。我会试试看,看看效果如何。我会让你知道的。所以这也应该反过来工作。获取一个数字并将其转换为字母?@neme0025:是的,但需要显式转换才能将加法结果转换回char:
char letter=(char)('a'+number)谢谢。我会试试看,看看效果如何。我会让你知道的。