아래는 코드 스 니펫입니다.
int a = 1;
char b = (char) a;
System.out.println(b);
그러나 내가 얻는 것은 빈 출력입니다.
int a = '1';
char b = (char) a;
System.out.println(b);
출력으로 1을 얻습니다.
누군가 이것을 설명 할 수 있습니까? 첫 번째 스 니펫에서와 같이 int를 char로 변환하려면 어떻게해야합니까?
아래는 코드 스 니펫입니다.
int a = 1;
char b = (char) a;
System.out.println(b);
그러나 내가 얻는 것은 빈 출력입니다.
int a = '1';
char b = (char) a;
System.out.println(b);
출력으로 1을 얻습니다.
누군가 이것을 설명 할 수 있습니까? 첫 번째 스 니펫에서와 같이 int를 char로 변환하려면 어떻게해야합니까?
답변:
int a = 1;
char b = (char) a;
System.out.println(b);
ascii 값 1 (인쇄 할 수없는 머리글 시작 문자)로 문자를 인쇄합니다.
int a = '1';
char b = (char) a;
System.out.println(b);
ascii 값 49 ( '1'에 해당하는 문자)를 인쇄합니다.
숫자 (0-9)를 변환하려면 여기에 48을 더하고 캐스트하거나 Character.forDigit(a, 10);
.
int
ascii 값 으로 변환하려면 Character.toChars(48)
예를 들어 사용할 수 있습니다 .
System.out.println('b'+3);
b3
대신 101
println을 사용하여 얻을 수 있습니까? 대신 다른 방법으로 printf?
Character.toChars
ASCII 값이 아닌 유니 코드 코드 포인트에서 작동합니다. int를 char로 캐스트하면 동일합니다 (BMP 전용).
내 대답은 jh314의 대답과 비슷하지만 조금 더 자세히 설명하겠습니다.
이 경우 수행해야 할 작업은 다음과 같습니다.
int a = 1;
char b = (char)(a + '0');
System.out.println(b);
여기서는 문자가 실제로 ASCII 값으로 표현되기 때문에 '0'을 사용했습니다. '0'은 문자이며 값 48로 표시됩니다.
우리는 입력 (a + '0')
하고 이것을 더하기 위해 Java는 '0'을 ASCII 값인 48로 변환하고 a는 1이므로 합계는 49입니다.
(char)(49)
로 캐스팅 int
했습니다 char
. 49에 해당하는 ASCII는 '1'입니다. 이 방법으로 모든 숫자를 char로 변환 할 수 있으며 방법을 사용한 .toString()
다음 .charAt()
방법으로 숫자를 빼는 것보다 더 똑똑하고 더 나은 방법입니다.
당신이 찾고있는 것 같습니다 Character.forDigit
방법을 .
final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'
char에서 int로 다시 변환 할 수있는 메서드도 있습니다.
int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'
를 변경하면 RADIX
16 진수 (기수 16)와 최대 36 (또는 Character.MAX_RADIX
라고도 함 )의 기수도 지원할 수 있습니다 .
65
인쇄하고 A
싶습니까? 여기 내 대답은이 질문의 요구 사항에 대한 예상 동작을 인쇄하기 때문입니다. 참조 ideone.com/09LAFR
int a = 1;
char b = (char) a;
System.out.println(b);
안녕, 나는 같은 문제를 겪었지만 내가 한 일은 다음 코드였습니다.
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
이것으로 십진수 값을 char 유형으로 얻습니다. 문자열의 유일한 값은 'a'이고 아시다시피 해당 문자열의 'a'위치는 0에서 시작하기 때문에 인덱스 0과 함께 charAt ()을 사용했습니다.
내 영어가 잘 설명되지 않으면 죄송합니다. 도움이 되었기를 바랍니다.
char에 cast integer를 입력 할 때마다 해당 int의 ascii 값을 반환합니다 (더 나은 이해를 위해 ascii 테이블을 살펴 봅니다).
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D
char
는 UTF-16 코드 단위입니다. UTF-16 코드 단위 인 68은 유니 코드 코드 포인트 U + 0044 를 나타내는 데 필요한 유일한 코드 단위 입니다. System.out은 텍스트 인코딩을 기본 인코딩으로 변경합니다 (아마도 프로그램이 실행중인 터미널 / 콘솔과 일치 함). println은 문자를 받아 인코딩을 시도합니다. 문자는 완전한 코드 포인트이므로 시도 할 수 있습니다. U + 0044는 거의 모든 문자 세트의 문자이기 때문에,이를 손상되지 않게 터미널에 가져 오는 데 성공해야합니다. ASCII와 관련이 없습니다.
자바에서 문자 는 int입니다. 첫 번째 스 니펫은 기본 문자 인코딩 체계 (유니 코드 일 가능성이 있음)의 1 값에 해당하는 문자를 인쇄합니다. 유니 코드 문자 U + 0001은 인쇄되지 않는 문자이므로 출력이 표시되지 않습니다.
문자 '1'을 인쇄하려면 사용중인 인코딩 체계에서 '1'값을 조회 할 수 있습니다. 유니 코드에서는 49 (ASCII와 동일)입니다. 그러나 이것은 숫자 0-9에서만 작동합니다.
char 대신 String을 사용하고 Java의 내장 toString()
메소드를 사용하는 것이 더 나을 수 있습니다 .
int a = 1;
String b = toString(a);
System.out.println(b);
이것은 시스템 인코딩이 무엇이든 작동하며 여러 자리 숫자에 대해 작동합니다.
기본이 아닌 클래스 유형에 대해 이야기하는 경우 다음 트릭을 수행해야합니다.
Integer someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt));
완전한 변환 개념은 다음 프로그램을 참조하십시오.
class typetest{
public static void main(String args[]){
byte a=1,b=2;
char c=1,d='b';
short e=3,f=4;
int g=5,h=6;
float i;
double k=10.34,l=12.45;
System.out.println("value of char variable c="+c);
// if we assign an integer value in char cariable it's possible as above
// but it's not possible to assign int value from an int variable in char variable
// (d=g assignment gives error as incompatible type conversion)
g=b;
System.out.println("char to int conversion is possible");
k=g;
System.out.println("int to double conversion is possible");
i=h;
System.out.println("int to float is possible and value of i = "+i);
l=i;
System.out.println("float to double is possible");
}
}
희망, 적어도 무언가를 도울 것입니다
문자를 해당 정수로 변환하려면 다음과 같이 할 수 있습니다.
int a = (int) 'a';
char b = (char) a;
System.out.println(b);
이것은 ASCII에 정상적으로 인쇄 할 수없는 항목이 있기 때문에 발생합니다.
예를 들어, 숫자 97에서 122는 소문자 a에서 z에 해당하는 정수입니다.
public class String_Store_In_Array
{
public static void main(String[] args)
{
System.out.println(" Q.37 Can you store string in array of integers. Try it.");
String str="I am Akash";
int arr[]=new int[str.length()];
char chArr[]=str.toCharArray();
char ch;
for(int i=0;i<str.length();i++)
{
arr[i]=chArr[i];
}
System.out.println("\nI have stored it in array by using ASCII value");
for(int i=0;i<arr.length;i++)
{
System.out.print(" "+arr[i]);
}
System.out.println("\nI have stored it in array by using ASCII value to original content");
for(int i=0;i<arr.length;i++)
{
ch=(char)arr[i];
System.out.print(" "+ch);
}
}
}
b = (char)('0' + a)
만에0 <= a <= 9
.