Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

StringIndexOutOfBoundsException ใน Java คืออะไร


สตริงใช้เพื่อเก็บลำดับของอักขระใน Java ซึ่งถือเป็นวัตถุ คลาสสตริงของแพ็คเกจ java.lang แสดงถึงสตริง

คุณสามารถสร้างสตริงได้โดยใช้คีย์เวิร์ดใหม่ (เช่นเดียวกับออบเจ็กต์อื่นๆ) หรือโดยการกำหนดค่าให้กับตัวอักษร (เช่นประเภทข้อมูลพื้นฐานอื่นๆ)

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

เนื่องจากสตริงเก็บอาร์เรย์ของอักขระ เช่นเดียวกับอาร์เรย์ ตำแหน่งของอักขระแต่ละตัวจึงแสดงด้วยดัชนี (เริ่มจาก 0) ตัวอย่างเช่น ถ้าเราสร้างสตริงเป็น −

String str = "Hello";

อักขระในนั้นอยู่ในตำแหน่ง −

StringIndexOutOfBoundsException ใน Java คืออะไร

หากคุณพยายามเข้าถึงอักขระของสตริงที่ดัชนีซึ่งมากกว่าความยาวของ StringIndexOutOfBoundsException ถูกโยนทิ้ง

ตัวอย่าง

สตริง class ใน Java มีวิธีการต่างๆ ในการจัดการ Strings คุณสามารถค้นหาอักขระที่ดัชนีเฉพาะได้โดยใช้ charAt() วิธีการของคลาสนี้

เมธอดนี้ยอมรับค่าจำนวนเต็มที่ระบุดัชนีของสตริงและส่งคืนอักขระในสตริงที่ดัชนีที่ระบุ

ในโปรแกรม Java ต่อไปนี้ เรากำลังสร้างสตริงที่มีความยาว 17 และพยายามพิมพ์องค์ประกอบที่ดัชนี 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));
   }
}

ผลลัพธ์

ข้อยกเว้นรันไทม์ -

เนื่องจากเรากำลังเข้าถึงองค์ประกอบที่ดัชนีที่มากกว่าความยาวของ 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)