Computer >> Máy Tính >  >> Lập trình >> Java

StringIndexOutOfBoundsException trong Java là gì?

Các chuỗi được sử dụng để lưu trữ một chuỗi các ký tự trong Java, chúng được coi như các đối tượng. Lớp String của gói java.lang đại diện cho một Chuỗi.

Bạn có thể tạo Chuỗi bằng cách sử dụng từ khóa mới (giống như bất kỳ đối tượng nào khác) hoặc bằng cách gán giá trị cho ký tự (giống như bất kỳ kiểu dữ liệu nguyên thủy nào khác).

String stringObject = new String("Hello how are you");
String stringLiteral = "Welcome to Tutorialspoint";

Vì chuỗi lưu trữ một mảng ký tự, giống như mảng, vị trí của mỗi ký tự được biểu thị bằng một chỉ số (bắt đầu từ 0). Ví dụ:nếu chúng ta đã tạo một Chuỗi là -

String str = "Hello";

Các ký tự trong đó được định vị là -

StringIndexOutOfBoundsException trong Java là gì?

Nếu bạn cố gắng truy cập ký tự của một Chuỗi tại chỉ mục lớn hơn độ dài của nó a StringIndexOutOfBoundsException được ném.

Ví dụ

Chuỗi lớp trong Java cung cấp các phương thức khác nhau để thao tác với các Chuỗi. Bạn có thể tìm ký tự tại một chỉ mục cụ thể bằng cách sử dụng charAt () phương thức của lớp này.

Phương thức này chấp nhận một giá trị số nguyên xác định chỉ mục của Chuỗi và trả về ký tự trong Chuỗi tại chỉ mục được chỉ định.

Trong chương trình Java sau, chúng tôi đang tạo một Chuỗi có độ dài 17 và cố gắng in phần tử ở chỉ mục 40.

public class Test {
   public static void main(String[] args) {
      String str = "Hello how are you";
      System.out.println("Length of the String: "+str.length());
      for(int i=0; i<str.length(); i++) {
         System.out.println(str.charAt(i));
      }
      //Accessing element at greater than the length of the String
      System.out.println(str.charAt(40));
   }
}

Đầu ra

Ngoại lệ về thời gian chạy -

Vì chúng tôi đang truy cập phần tử ở chỉ mục lớn hơn độ dài của nó, nên ném StringIndexOutOfBoundsException.

Length of the String: 17
H
e
l
l
o
h
o
w
a
r
e
y
o
u
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 40
   at java.base/java.lang.StringLatin1.charAt(Unknown Source)
   at java.base/java.lang.String.charAt(Unknown Source)
   at Test.main(Test.java:9)