如何将变量增加到字母表中的下一个或上一个字母?

时间:2010-05-24 18:30:34

标签: java string variables alphabet

我在变量字符串中定义了大写字母,我想输出字母表中的下一个和前一个字母。例如,如果变量等于'C',我希望输出'B''D'

5 个答案:

答案 0 :(得分:28)

一种方式:

String value = "C";
int charValue = value.charAt(0);
String next = String.valueOf( (char) (charValue + 1));
System.out.println(next);

答案 1 :(得分:12)

好吧,如果你的意思是'ABC',那么他们分成两个序列a-z和A-Z,我认为最简单的方法是使用char变量并将索引增加一个。

char letter='c';
letter++;  // (letter=='d')

同样适用于减量:

char letter='c';
letter--; // (letter=='b')

事实是字母a-z的表示是97-122而A-Z是65-90,所以如果字母的情况很重要,你需要注意它。

答案 2 :(得分:6)

如果您仅限于拉丁字母,则可以使用ASCII表中的字符按字母顺序排序的事实,因此:

System.out.println((char) ('C' + 1));
System.out.println((char) ('C' - 1));

输出DB

您要做的是添加charint,从而有效地将int添加到char的ascii代码中。当您转回char时,ascii代码将转换为字符。

答案 3 :(得分:0)

就像这样:

System.out.printf("%c\n",letter);
letter++;

答案 4 :(得分:0)

所有答案都是正确的,但似乎没有给出完整的解释,所以我会尝试。与任何其他类型一样,char存储为数字(16-bit in Java)。与其他非数字类型不同,存储数字的值到它们所代表的char的值的映射是众所周知的。此映射称为ASCII Table。 Java编译器将char视为16位数字,因此您可以执行以下操作:

System.out.print((int)'A'); // prints 65
System.out.print((char)65); // prints A

出于这个原因,++--和其他数学运算适用于char,并提供增量\递减值的方法。

请注意,当您超过16位时,转换是循环的:

System.out.print((char)65601); // also prints A
System.out.print((char)-65471); // also prints A

P.S。这也适用于Kotlin:

println('A'.toInt()) // prints 65
println(65.toChar()) // prints A
println(65601.toChar()) // prints A
println((-65471).toChar()) // prints A