Java.Lang.StringIndexOutOfBoundsException: String Index Out of Range を修正
このチュートリアルでは、Java の Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
エラーについて説明します。
java.lang.StringIndexOutOfBoundsException: String index out of range
エラーを修正する
StringIndexOutofBoundsException
は、インデックスが負であるか、文字列の長さを超えている文字列の文字にアクセスするときに発生する未チェックの例外です。 この例外は、String にない文字にアクセスしようとしている charAt()
メソッドを使用した場合にもスローされます。
StringIndexOutofBoundsException
は未チェックの例外であるため、メソッドまたはコンストラクターのスローに追加する必要はありません。 try-catch
ブロックを使用して処理できます。 この例外が発生する可能性がある特定のシナリオは次のとおりです。
String.charAt(int index)
を使用すると、指定された文字列インデックスの文字が返されます。 インデックスが負の値または文字列の長さより大きい場合、StringIndexOutofBoundsException.
がスローされます。- 指定された引数を持つ文字列を返す
String.valueOf(char[] data, int offset, int count)
を使用する場合。 インデックスが負の場合、またはoffset + count
が配列のサイズより大きい場合、StringIndexOutofBoundsException
がスローされます。 - 文字列を返す
CharSequence.subSequence(int beginIndex, int endIndex)
を使用する場合。beginIndex
がendIndex
より大きいか、endIndex
が文字列の長さより大きい場合、StringIndexOutofBoundsException
がスローされます。 - 指定された文字列から部分文字列を返す
String.substring(int beginIndex)
を使用する場合。beginIndex
が負の場合、または文字列の長さより大きい場合、StringIndexOutofBoundsException
がスローされます。 String.substring(int beginIndex, int endIndex)
を使用すると、特定の範囲内の部分文字列が返されます。 いずれかのインデックスが負の場合、またはendIndex
がbeginIndex
の文字列の長さよりも大きく、endIndex
よりも大きい場合、StringIndexOutofBoundsException
をスローします。
StringIndexOutofBoundsException
の例を試してみましょう。 例を参照してください:
package delftstack;
public class Example {
public static void main(String[] arg) {
String DemoStr = "delftstack";
System.out.println(DemoStr.charAt(11));
}
}
上記のコードは、インデックス 11 に文字がないため、StringIndexOutofBoundsException
をスローします。出力を参照してください。
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 11
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:1512)
at delftstack.Example.main(Example.java:7)
StringIndexOutOfBoundsException
は、try-catch
ブロックを使用して処理できます。 解決策を参照してください:
package delftstack;
public class Example {
public static void main(String[] arg) {
String DemoStr = "delftstack";
try {
System.out.println(DemoStr.charAt(11));
} catch (StringIndexOutOfBoundsException e) {
System.out.println("Please insert a index under String length: " + DemoStr.length());
}
}
}
上記のコードの出力は次のようになります。
Please insert a index under String length: 10
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook