我在变量字符串中定义了一个大写字母,我想输出字母表中的下一个和前一个字母。例如,如果变量等于'C'
,我想输出'B'
和'D'
。
问问题
62544 次
5 回答
34
单程:
String value = "C";
int charValue = value.charAt(0);
String next = String.valueOf( (char) (charValue + 1));
System.out.println(next);
于 2010-05-24T18:35:47.533 回答
16
好吧,如果您的意思是“ABC”,那么它们会分成两个序列 az 和 AZ,我认为最简单的方法是使用 char 变量并将索引加一。
char letter='c';
letter++; // (letter=='d')
减量也是如此:
char letter='c';
letter--; // (letter=='b')
问题是字母az的表示是97-122,AZ是65-90,所以如果字母的大小写很重要,你需要注意它。
于 2010-05-24T18:40:33.793 回答
6
如果您仅限于拉丁字母,则可以使用 ASCII 表中的字符按字母顺序排列的事实,因此:
System.out.println((char) ('C' + 1));
System.out.println((char) ('C' - 1));
输出D
和B
.
您所做的是添加 achar
和 an int
,从而有效地将 . 添加int
到char
. 当您转换回 时char
,ascii 代码将转换为字符。
于 2010-05-24T18:33:57.443 回答
1
所有答案都是正确的,但似乎没有一个给出完整的解释,所以我会尝试。就像任何其他类型一样, achar
存储为数字(Java 中为 16 位)。与其他非数字类型不同,存储数字的值到char
它们所代表的 s 值的映射是众所周知的。这种映射称为ASCII 表。Java 编译器将char
s 视为 16 位数字,因此您可以执行以下操作:
System.out.print((int)'A'); // prints 65
System.out.print((char)65); // prints A
出于这个原因,++
和--
其他数学运算适用于char
s 并提供一种增加/减少其值的方法。
请注意,当您超过 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
于 2018-04-23T11:06:15.863 回答
0
像这样 :
System.out.printf("%c\n",letter);
letter++;
于 2017-04-03T16:40:54.577 回答