私は次のコードを持っている
private static int getYear(char[] charArray)
{
return (int)charArray[0] * 1000 + (int)charArray[1] * 100 + (int)charArray[2] * 10 + (int)charArray[3];
}
この抜粋は、4要素のchar配列から数値を計算します。 「2015」から55343があります。
なにか提案を?
回答:
回答№1は2運動の目的は使用することではないと仮定 String
そして parseInt
、あなたは文字を変換する必要があります "0"
に "9"
数字に 0
に 9
。これは文字を引くことによって行われます "0"
だから、あなたは得る:
private static int getYear(char[] charArray)
{
return (charArray[0] - "0") * 1000
+ (charArray[1] - "0") * 100
+ (charArray[2] - "0") * 10
+ (charArray[3] - "0");
}
これは、Javaが文字列をUnicode文字で格納するためです。 Unicodeは、ASCII文字セットを(非常に)拡張したものです。
このウィキペディアのページにあるASCIIの印刷可能文字を見てください。 https://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart
ご覧のとおり、の文字(グリフ)は 0
10進数値 48
, 1
は 49
、...、そして 9
は 57
.
だから、キャスト char
キャラクターと "0"
〜に int
値が得られます 48
。それから私達は特性があるという事実に頼ります "0"
に "9"
連続しているので、48(の値 "0"
)降伏します 0
に 9
、それが私たちが欲しいものです。
回答№2については2
private static int getYear(char[] charArray)
{
return Integer.parseInt(String.valueOf(charArray));
}
回答№3の場合は0
private static int getYear(char[] charArray){
return Integer.parseInt(new String(charArray));
}