20

可変文字列で大文字を定義していて、次と前の文字をアルファベットで出力したいと思います。たとえば、変数がに等しい場合、とを出力し'C'たいと思います。'B''D'

4

5 に答える 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'を意味する場合、それらは2つのシーケンスazとAZに分割されます。最も簡単な方法は、char変数を使用し、インデックスを1つインクリメントすることです。

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));

出力DB

あなたがすることは、charとを追加することです。これにより、のASCIIコードにint効果的にを追加します。にキャストバックすると、ASCIIコードが文字に変換されます。intcharchar

于 2010-05-24T18:33:57.443 に答える
1

すべての答えは正しいですが、完全な説明を与えるものはないようですので、試してみます。他のタイプと同様に、aは数値( Javaでは16ビットchar)として格納されます。他の非数値タイプとは異なり、格納された数値の値からそれらが表すsの値へのマッピングはよく知られています。このマッピングはASCIIテーブルと呼ばれます。Javaコンパイラはsを16ビットの数値として扱うため、次のことができます。charchar

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

このため、、++および--その他の数学演算はsに適用され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
于 2018-04-23T11:06:15.863 に答える
0

ちょうどこのような :

System.out.printf("%c\n",letter);
letter++;
于 2017-04-03T16:40:54.577 に答える