(Java)java.lang.ClassCastException: java.lang.String은 java.lang.Integer로 캐스팅할 수 없습니다.

(Java)java.lang.ClassCastException: java.lang.String은 java.lang.Integer로 캐스팅할 수 없습니다.

평소처럼 차분한 근무 시간.

편집할 수 있는 매개변수를 추가해서 정상적으로 편집했습니다.

코드를 한 줄 바꾸고 나서 매개변수 이름만 신경쓰면 에러 보고 안 할 자신이 있어서 배포를 했더니 이런 에러가 떴다.


무엇..?

익숙한 잘못된 이름입니다.

문자열이지만 왜 int로 변경합니까?

JS처럼 타입 변환을 할 수 있다면 좋겠지만 JAVA는 손이 더 많이 가는 친구다.

유형 변환이란 무엇입니까?
변수 또는 리터럴의 유형을 다른 유형으로 변환하여 다른 유형 간에 작업을 수행할 때 해당 유형과 일치시킵니다.

문자열, int 형 변환 방법

– 문자열을 int로
문자열 ex_str = “123”;
int ex_int = Integer.parseInt(ex_str);

– 정수를 문자열로
정수 ex_int = 123;
String ex_str = Integer.toString(ex_int);
또는
String ex_str = String.valueOf(ex_int);
또는
문자열 ex_str = ex_int + “”;

변환은 다음과 같이 수행할 수 있습니다.

가격 관련 파라미터라 int로 받을 줄 알았는데 ‘90,000’과 같은 가격 형식으로 값이 들어옵니다.

물론 문자열 형태로 제공됩니다.

내가 먼저 처리했다.

int price = jsonMap.get("price_format") == null ? 0 : (int) jsonMap.get("price_format");

이와 같이 값을 받으면 null이면 0을, null이 아니면 price_format의 값을 얻는다.

그런데 price_format이 문자열로 전달되는데 이런 식으로 typecasting을 하면 위와 같은 오류가 발생한다.

총 3개의 파트가 있으니 실수하지 않도록 주의하세요.

1. null 또는 비어 있지 않은 경우에만 값을 삽입하십시오.

2. String을 int로 변환하여 값을 int로 받습니다.

3. 가격 형식 때문에 입력된 쉼표(,)를 제거합니다.

if(!"".equals(price_format) && price_format!=null) {
    jsonMap.put("price_format", Integer.parseInt( price_format.replaceAll(",", "") ));
}

이렇게 수정합니다.

Integer.parseInt는 문자열을 int 유형으로 변환하는 데 사용되며, replaceAll() 함수는 쉼표에 사용됩니다.

까다로운 부분은 아니지만 그냥 잊어버리면 한 번 놓치고 에러를 내뱉는 녀석이 있으니 확인하고 넘어갑시다.

String int 외에도 변환하는 방법에 대해 알아보겠습니다.

그 다음에는 형 변환이 헷갈릴 때 와서 볼 수 있도록 메모만 정리했습니다.

전환하다 공식 결과
문자에 대한 정수 (문자) 65 ‘ㅏ’
문자를 정수로 (정수)A 65
부동 소수점 숫자 (정수)1.6f 하나
int float (부동) 10 10.0f

자동 유형 변환(암시적 유형 변환)

– 데이터가 손실되지 않는 한 자동 유형 변환.

byte(1) > short(2) > char(2) > int(4) > long(8) > float(4) > double(8)

조건부이지만 유형을 자동으로 변환하는 Java를 모르겠습니다.

전환하다 공식
두 배가 될 문자열 Double.valueOf(str)
띄울 문자열 Float.valueOf(str)
너무 긴 문자열 Long.parseLoing(str)
문자열 짧은 Short.parseShort(str)

정수<-->실수에 대한 유형 변환에는 ‘(int)’ 접두사가 붙습니다.(내 실수 사례)

char는 int와 함께 사용할 수 있습니다.


이 ASCII 코드 테이블의 숫자는 별도의 유형 변환 없이 char 및 int에서 연산할 수 있습니다.

char a = 97;
int b = a + 100;

System.out.println(b) //197

Similar Posts

  • 돈을 많이 버는 방법

    질문 날짜 : 2023-02-14 질문 : 큰 돈을 버는 방법 chatGPT의 답변 : 자격 또는 경력을 쌓기 위해 높은 수준의 교육을 받으십시오. 사업을 시작하거나 사업을 시작하고 성공적으로 운영 주식, 부동산, 암호화폐 등에 투자하여 수익을 올리십시오. 고임금 직업 찾기 및 작업 그러나 이러한 방법은 모두 특정 분야에 대한 노력, 시간 및 지식과 경험이 필요합니다. 따라서 자신의…

  • 청주 상당구 항문외과, 건강검진 주의사항

    청주 상당구 항문외과 건강검진 주의사항 청주 상당구 항문외과 건강검진 주의사항 청주 상당구 항문외과, 건강검진 주의사항 안녕하세요 외과 전문의 청주 상당구 항문외과 세빛병원 홍종훈 대표원장입니다. 연초에 건강검진을 받았습니까? 연초와 연말에는 건강검진을 통해 건강을 확인해 보겠습니다. 오늘은 건강검진을 받을 때 주의해야 할 부부에 대해 함께 이야기를 나눠보도록 하겠습니다. 10대~20대 분들, 혹은 우리 옛날 모습을 기억해보면 하룻밤을 보내고…

  • 암 프로토콜 의미 및 해석

    사주 명리에는 여러 종류의 금액이 있습니다. 천체와 지장 사이에는 천체의 연결, 지지간 지지간, 삼합, 지지의 세 글자의 합, 방사합, 방향의 합, 암흑과 명합, 지장 내 암흑 햅틱이 있다. 이번에는 암에 대해 자세히 알아보겠습니다. 음모 담합이란 비밀 계약이나 비밀 활동을 말합니다. 또한 배우자의 소원도 판단합니다. 암을 이해하려면 지장 간을 이해해야 합니다. 대장간은 기계를 구성하는 천간문자를 말하며…

  • 역류성 식도염의 원인과 증상 치료, 그리고 생활습관이 문제

    역류성 식도염의 원인과 증상 치료, 그리고 생활습관이 문제 역류성 식도염…정말 요즘 현대인들이 많이 걸리는 병 중 하나입니다. 저도 역류성 식도염을 자주 앓는 편인데 바로 야식과 술을 먹고 바로 눕는 경우가 많기 때문에 이런 병에 걸릴 것 같아요.(눈물) 그래서 오늘은 역류성 식도염의 원인과 증상, 그리고 치료 방법에 대해서도 알아보겠습니다! 역류성 식도염…정말 요즘 현대인들이 많이 걸리는 병…

  • SQL 로더 배치 데이터 로드 형식

    SQL 로더 배치 데이터 로드 형식 SQL4 오라클 2011-07-29 11:25:51 SQL 4 Oracle Oracle SQL 실습 ▒ SQL 로더를 이용하여 데이터 포맷을 대량으로 로드 1) 파일 끝에 구분자 ‘|’를 직접 로드 ‘@’ 데이터 다운로드입력 파일*붙이다INTO TABLE 목적_테이블 이름“|”로 끝나는 필드는 선택적으로 다음에 포함됩니다. ‘@’(엘,엠,엔,오)시작 데이터8103021123456|진씨|1|134858|8103021123457|리씨|1|403831|8103021123458|박씨|1|403831|@ 2) DATA.txt 파일 로딩 구분자 ‘|’ 파일 끝 ‘@’ 데이터…

  • Dolphin Tee-top 제품 주문 공지 및 예약 주문 안내

    이것은 행복의 바다입니다. 한동안 환율이 하락(?)한 탓에 가격이 어느 정도 올랐기에 차 주문이 들어왔다. 예상대로 가격도 많이 올랐고, 환율도 올랐고… 뉴크라운 이전에 비해 물류비도 많이 올랐고… 최소 요금도 있습니다. . 올라가지 않는 것이 없습니다. . T-top은 수년에 걸쳐 판매되며 수요는 결국 특정 모델로 수렴되므로 모두 보유할 필요가 없습니다. 제 생각에는. 그래서 이번에는 아래의 모델군으로 좁혀보겠습니다….