2017-10-19 18 views
0
私は文字列を持っている

の値を変更することなく、int型にint型の文字を変換:はたとえば、Java

(A:s2 = "SPX8X55"; は、私は、この文字列のアルファベットの各文字は、独自の価値を持っていることを望みます= 1、B = 2、... Z = 26)

私は、foreachループを使ってint型の数値にcharを割り当てることができると考えました。 Aは、数65は、ASCIIであるので、65ので、64 - - 私は大文字のみを使用していたよう は、私は、cを使用する64 = 1 => Aは数

for (char c : s2.toCharArray()) { 
    int charzahl = c - 64; 
    System.out.println(charzahl); 
} 

1を持っていますが、私は数字が滞在したいです数字。私はこれのforeachループを使用している場合は、私が手-8 8と5 ため-11のために私は次のように「if文」について考えている:任意の数字は、Cのためにそこにあるかどうかを確認するために

if (c >= 0 || c <= 0){ ... } 

。これらの文字をintにキャストすると、-8と-11が再び返されます。 どうすればそれらをint型にキャストして、そのまま存在することができますか?私の目的は、すべての数字をforループで最後に追加することです。

+0

「しかし、私は数字をステイにしたい」 - これは何を意味するのですか? 「数字「0」〜「9」を値48〜57のままにしたいのですか? –

+2

'if(c> = 0 || c <= 0)'そして、どちらの数値も0以上または0以下ではないでしょうか? ifは無意味なようです。 –

+0

私は5を5にしたいがintとして、-11としてはしない。 – Jamie

答えて

1

異なる範囲で異なる計算があります。ほんのわずかなので、この構文は明らかです。

int charzahl = 
    (c >= 'A' && c <= 'Z') ? c - 'A' + 1 : 
    (c >= '0' && c <= '9') ? c - '0' : 
    0; 
+0

これは私が探していたものです!どうもありがとうございます。 – Jamie

+0

BTW-JavaはASCIIのASCIIエンコーディングではなく、[Unicode](http://www.unicode.org/charts/nameslist/index.html)のUTF-16エンコーディングを使用します。 –