> 일반적인 문제 > 숫자 형식 예외란 무엇입니까?

숫자 형식 예외란 무엇입니까?

青灯夜游
풀어 주다: 2021-01-14 18:25:46
원래의
59227명이 탐색했습니다.

numberformatException은 숫자 형식 예외를 나타냅니다. 문자열이 문자열이나 다른 유형과 혼합되어 있는지 확인해야 합니다. 텍스트의 내용은 숫자 형식의 문자열이어야 한다는 점에 유의해야 합니다.

숫자 형식 예외란 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.

오늘 디지털 변환 예외가 발생했습니다. 처리 후 몇 가지 시나리오를 간략하게 요약했습니다.




E/AdroidRutime: 치명적인 예외: java.lang.NumberFormatException: 잘못된 int: "0 "

java.lang.NumberFormatException  숫자 형식이 이상합니다. 이 예외는 String을 지정된 숫자 유형으로 변환하려고 할 때 발생하며 문자열이 숫자 유형에 필요한 형식을 충족하지 않습니다.

잘못된 정수: "0 " Tips "0"을 숫자형으로 변환할 때 오류가 발생했습니다.구체적으로는 어떤 클래스의 어떤 메서드에서 어떤 라인에서 발생하는 오류인지 아래

com에서 확인하세요. .example.myclock.TimerView$5.onTextChanged(TimerView.java:95)

com.example.myclock.TimerView 클래스의 onTextChanged 메서드에서 imerView의 95번째 줄에 오류가 있습니다. java . ------원인 분석---------

"0"은 0 뒤에 공백이 있는데, 문자열을 숫자로 변환할 때 공백을 제거해야 합니다.

------해결책--------------------------------

예: int vale =Integer.parseInt(s.toString ().trim()); // ToString() 문자열로 변환하는 방법입니다. Trim()은 문자열 양쪽의 공백을 제거하는 방법입니다.

NumberFormatException이 발생하는 기타 상황:

숫자 유형의 변환 범위를 초과하는 경우:

Inte를 사용하여 문자를 변환할 때 발생 ger.parseInt() NumberFormatException 예외, 문자를 더 짧게 변경하면 괜찮습니다
String line3[1]= "8613719716 "
int int1=java.lang.Integer.parseInt(line3[1 ]);

위는 프로그램의 짧은 섹션이지만 실행 프로세스 중에 항상 예외가 발생합니다.
Exception in thread "main" java.lang.NumberFormatException: 입력용 문자열: "8613719716 "

------원인 분석---------

int 유형의 저장 범위는 -2,147,483,648 --2,147,483,647입니다. System.out.println(Integer.MAX_VALUE)을 사용하세요. 출력은 2147483647입니다. 그리고 String line3[1]= "8613719716 ";이 최대값을 초과합니다.

------해결책-------------------

8613719716은 int로 전혀 직접적으로 표현할 수 없고, long만 사용할 수 있고, 더 크면 BigInteger를 사용해야 합니다. Long.parseLong(문자열).

참조: http://www.myException.cn/j2se/NumberFormatException.html

사례 2, 값 유형 변환에서는 값이 비어 있는 상황을 고려하지 않습니다.

Android에서는 시퀀스가 ​​정확합니까? 얻은 edittext 값을 정수 .

startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());

 logcat 出现了如下错误05-12 10:26:35.536: ERROR/AndroidRuntime(293): java.lang.NumberFormatException: unable to parse '' as integer

logcat🎜🎜.05-12 10:26:35.536: 오류/AndroidRuntime(293): java.lang.NumberFormatException: ''를 정수로 구문 분석할 수 없습니다🎜🎜

. ------원인 분석---------

텍스트 상자 startTime_hour_edittext가 비어 있으면 Integer.parseInt가 시도합니다. ""를 정수로 변환합니다. 이것이 NumberFormatException이 발생하는 이유입니다. 따라서 int 유형으로 변환하기 전에 textbox startTime_hour_edittext가 비어 있는지 확인해야 합니다.

------솔루션-------------------

사용 중 startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());<span >startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());</span><span style="font-family:Arial,Helvetica Neue, Helvetica,sans-serif; color:#242729">之前</span>

before

판정 조건:

if(!startTime_hour_edittext.getText().toString().equalsIgnoreCase("")) {
startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());
}
로그인 후 복사

사례 3, 기본 시스템이 다름:

질문은 주로 기본 변환과 관련되어 있으며 범위는 30자리(1073741823) 또는 (0111111111111111)입니다. 111111111111111111111111111로 변환하려고 할 때 문제가 발생합니다.

이 코드는 입력이 바이너리인지 확인하고 변환합니다. int형 값입니다

if (checkNumber(input)) {
        try {
        number = Integer.parseInt(input);
        } catch (NumberFormatException ex) {
            log(ex.getMessage());
        }
    } else {
        toDecimal();
    }
로그인 후 복사

Boolean 반환값 방식의 String Code를 확인하기 위한 것입니다.

private static boolean checkNumber(String input) {
    for (char c : input.toCharArray()) {
        if (!Character.isDigit(c)) {
            return false;
        }
    }

    return true;}
로그인 후 복사

예외 발생:

java.lang.NumberFormatException: For input string: "111111111111111111111111111111"
로그인 후 복사
------원인 분석--------- ----------

🎜

因为 Integer.parseInt(String) 默认是十进制.

所以需要使用 Integer.parseInt(String, int) 并且指定要转换的n进制的数字的n。比如二进制是2.

------解决方案--------------------

int value = Integer.parseInt(input, 2);
로그인 후 복사

更多编程相关知识,请访问:编程入门!!

위 내용은 숫자 형식 예외란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿