Java에서 문자를 정수로 변환
누군가 여기서 무슨 일이 일어나고 있는지 설명해 주시겠습니까?
char c = '+';
int i = (int)c;
System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));
이것은 인쇄합니다 i: 43 ch:-1
. 나는 변환하는 원시 변환에 의존해야 그 의미 하는가 char
에 int
? 그래서 어떻게 변환 할 Character
수 Integer
있습니까?
편집 : 예 , 숫자 값이 아닌 경우 Character.getNumericValue
반환 -1
되는 것을 알고 있습니다. 질문은 왜 원시 변환을 수행하면 반환 43
됩니까?
Edit2 : 43
는 ASCII +
이지만 성공 getNumericValue
하지 못한 것처럼 캐스트가 성공하지 못할 것으로 예상합니다 . 그렇지 않으면 동일한 작업을 수행하지만 결과가 다른 두 가지 의미 론적 동등한 방법이 있음을 의미합니까?
Character.getNumericValue(c)
는 java.lang.Character.getNumericValue(char ch)
수익 int
지정된 유니 코드 문자가 나타내는 값입니다. 예를 들어 문자 '\u216C'
(로마 숫자 50)는 값이 50 인 int를 반환합니다.
대문자 ('\u0041' through '\u005A')
, 소문자 ('\u0061' through '\u007A')
및 전체 너비 변형 ('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A')
형식의 AZ 문자 는 10에서 35까지의 숫자 값을 갖습니다. 이는 이러한 char 값에 숫자 값을 할당하지 않는 유니 코드 사양과 무관합니다.
이 메서드는 문자의 숫자 값을 음이 아닌 int 값으로 반환합니다.
문자에 음이 아닌 정수가 아닌 숫자 값이있는 경우 -2;
문자에 숫자 값이 없으면 -1입니다.
그리고 여기 에 링크가 있습니다.
문서에 명확하게 나와 있듯이 Character.getNumericValue()
문자 값을 숫자로 반환합니다. 문자가 숫자가 아닌 경우
반환 -1
됩니다.
박스형 Character
객체 의 숫자 유니 코드 코드 포인트를 얻으려면 먼저 박스 를 풀어야합니다.
int value = (int)c.charValue();
아래 중 하나를 시도하십시오. 작동해야합니다.
int a = Character.getNumericValue('3');
int a = Integer.parseInt(String.valueOf('3');
Javadoc에서 Character#getNumericValue
:
문자에 숫자 값이 없으면 -1이 반환됩니다. 문자에 음이 아닌 정수로 표현할 수없는 숫자 값 (예 : 분수 값)이있는 경우 -2가 반환됩니다.
문자 +
에 숫자 값이 없으므로 -1이됩니다.
최신 정보:
원시 변환이 43을 제공하는 이유는 문자 '+'가 정수 43으로 인코딩되기 때문입니다.
43은 "+"기호의 dec ASCII 번호입니다. 그것은 당신이 43을 돌려받는 이유를 설명합니다. http://en.wikipedia.org/wiki/ASCII
public class IntergerParser {
public static void main(String[] args){
String number = "+123123";
System.out.println(parseInt(number));
}
private static int parseInt(String number){
char[] numChar = number.toCharArray();
int intValue = 0;
int decimal = 1;
for(int index = numChar.length ; index > 0 ; index --){
if(index == 1 ){
if(numChar[index - 1] == '-'){
return intValue * -1;
} else if(numChar[index - 1] == '+'){
return intValue;
}
}
intValue = intValue + (((int)numChar[index-1] - 48) * (decimal));
System.out.println((int)numChar[index-1] - 48+ " " + (decimal));
decimal = decimal * 10;
}
return intValue;
}
참고 URL : https://stackoverflow.com/questions/19388037/converting-characters-to-integers-in-java
'programing tip' 카테고리의 다른 글
VisualStudio : 변수 이름을 바꿀 때의 바로 가기 (0) | 2020.12.15 |
---|---|
InvalidKeyException 잘못된 키 크기 (0) | 2020.12.15 |
내부 순환; (0) | 2020.12.14 |
React Hooks에서 componentWillMount ()를 사용하는 방법? (0) | 2020.12.14 |
자바 스크립트 : 같은 창에서 새 페이지 열기 (0) | 2020.12.14 |