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

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

单程:

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

好吧,如果你的意思是’ABC’,那么他们分成两个序列az和AZ,我认为最简单的方法是使用char变量并将索引递增1。

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

同样适用于减量:

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

事情是,字母az的表示是97-122,AZ是65-90,所以如果字母的情况很重要,你需要注意它。

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

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

输出DB

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

像这样 :

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

所有答案都是正确的,但似乎都没有给出完整的解释,所以我会试试。 与任何其他类型一样, char存储为数字( Java中为16位 )。 与其他非数字类型不同,存储数字的值到它们所代表的char的值的映射是众所周知的。 此映射称为ASCII表 。 Java编译器将char s视为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 

PS这也适用于Kotlin:

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