찾다
Javajava지도 시간범위를 벗어난 배열 인덱스 예외

Array index out of out-of-bounds exception

두려운 ArrayIndexOutOfBoundsException을 만나셨나요? 본 가이드에서는 그 원인을 설명하고 실용적인 해결책을 제시합니다. 아직 이 오류를 경험하지 않았더라도 이 오류를 이해하면 나중에 디버깅하는 데 어려움을 겪지 않아도 됩니다.

ArrayIndexOutOfBoundsException은 코드가 배열의 유효 범위 밖에 있는 인덱스를 사용하여 배열 요소에 액세스하려고 시도할 때 발생합니다. Java(및 기타 여러 언어)에서 배열 인덱스는 0에서 시작하여 array.length - 1까지 확장됩니다. array.length 또는 음수 인덱스에 액세스하려고 하면 이 예외가 발생합니다.

사례 연구: Java 정렬 프로그램

파일에서 정수를 읽고, 버블 정렬을 사용하여 정렬하고, 정렬된 결과를 표시하도록 설계된 Java 프로그램을 생각해 보세요. 아래 표시된 원래 코드는 ArrayIndexOutOfBoundsException.

을 생성했습니다.
public static void main(String[] args) {
    // ... (File input code using Scanner) ...

    int [] nums = new int [(int) name.length()]; // Problem starts here!

    // ... (File reading code) ...

    for (int i = 0; i < nums.length -1; i++) {
        for (int j = 0; j < nums.length - 1; j++) { // Potential issue here
            if(nums[i] > nums[j + 1]) {
                int temp = nums[j+1];
                nums[j+1] = nums[i];
                nums[i] = temp;
            }
        }
    }

    // ... (Output code) ...
}

문제의 근원

주요 문제는 버블 정렬 내의 중첩 루프에 있습니다. if(nums[i] > nums[j 1]) 줄에 문제가 있습니다. jnums.length - 1에 도달하면 j 1은 잘못된 인덱스인 nums.length이 됩니다.

해결책: 루프 경계 조정

수정에는 j 사용 시 j 1가 마지막 인덱스에 도달하는 것을 방지하기 위해 내부 루프의 조건을 수정하는 작업이 포함됩니다. 대신:

for (int j = 0; j < nums.length - 1; j++)

사용:

for (int j = 0; j < nums.length - 1; j++) 

이 미묘한 변경을 통해 nums[j 1]가 최대 유효 값(j)에 있을 때 코드가 nums.length - 2에 액세스하는 것을 방지할 수 있습니다.

추가 고려사항

  • 배열 크기: 초기 배열 선언 int [] nums = new int [(int) name.length()];도 잠재적으로 문제가 있을 수 있습니다. 파일 이름의 길이는 파일의 정수 수와 관련이 없습니다. 파일에서 읽은 실제 정수 수를 기반으로 배열의 크기를 동적으로 조정하거나 ArrayList.

    과 같은 보다 유연한 데이터 구조를 사용하는 것이 좋습니다.
  • 오류 처리: 강력한 코드에는 파일 입력 중 try-catch 또는 FileNotFoundException와 같은 잠재적인 예외를 관리하기 위한 오류 처리(예: NumberFormatException 블록)가 포함되어 있습니다.

원인을 이해하고 제공된 솔루션을 적용하면 프로그램의 오류를 효과적으로 ArrayIndexOutOfBoundsException 예방하고 해결할 수 있습니다. 강력하고 안정적인 코드를 위해 배열 크기를 신중하게 고려하고 포괄적인 오류 처리 기능을 통합하는 것을 잊지 마세요.

위 내용은 범위를 벗어난 배열 인덱스 예외의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.