我在变量字符串中定义了大写字母,我想输出字母表中的下一个和前一个字母。例如,如果变量等于'C'
,我希望输出'B'
和'D'
。
答案 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));
输出D
和B
。
您要做的是添加char
和int
,从而有效地将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