2017-10-19 10 views
0
내가 문자열을

의 값을 변경하지 않고 INT에 INT의 문자 변환 :예를 들어, 자바

(A : s2 = "SPX8X55"; 내가이 문자열의 알파벳의 각 문자는 자신의 가치를 가지고 있다고합니다 = 1, B = 2, ... Z = 26)

나는 foreach 루프를 통해 정수에 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을 얻고 -11 5. 내가이 같은 "만약 문"에 대한 생각 : 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 인코딩이 아닌 [유니 코드] (http://www.unicode.org/charts/nameslist/index.html)의 UTF-16 인코딩을 사용합니다. –