두려운 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])
줄에 문제가 있습니다. j
이 nums.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

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

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

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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