如何将变量增加到字母表中的下一个或上一个字母?
我在变量字符串中定义了大写字母,我想输出字母表中的下一个和前一个字母。 例如,如果变量等于'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));
输出D
和B
你要做的是添加一个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