1

first for loop: の正しい出力を取得for(int i=0;i<=name.length();i++)していますが、この loop: の出力が得られない理由がわかりませんfor(int i=name.length();i>=0;i--)。実行中に、そのインデックスが範囲外であるというエラーが表示されます。

ここでエラーを確認しましたが、わかりませんでした。

public class runner {
    public static void main(String[] args) {
        String name = "java";
        System.out.println(".length method()" + name.length());// executing
                                                                // .length()
                                                                // method
        System.out.println(".charAt method()" + name.charAt(5));
        for (int i = 0; i <= name.length(); i++) {
            System.out.println(name.charAt(i));
        }
        for (int j = name.length(); j >= 0; j--) {
            System.out.println(name.charAt(j));
        }
    }
}

出力

j
a
v
a
4

5 に答える 5

6

問題はi<=name.length();

i<name.length();長さが String のラップされた char 配列の境界を超えているためです。

同じ理由で、2 番目の for ループを次のように変更する必要があります。

for(int j=name.length()-1 ;j>=0;j--){
于 2013-08-14T17:34:15.223 に答える
2

配列のインデックスは 0 です<=<

呼び出すたびにそのエラーが発生します

name.charAt(name.length())
于 2013-08-14T17:34:48.907 に答える
2

Java 配列のインデックスはゼロから始まるため、範囲外の例外があります。たとえば、長さ = 5 の配列がある場合、最初の要素のインデックスは 0 になり、最後の要素のインデックスは 4 (長さ - 1) になります。

回線を変更する

for(int i=0;i<=name.length();i++){

for(int i=0;i<name.length();i++){

とライン

for(int j=name.length();j>=0;j--){

for(int j=name.length()-1;j>=0;j--){
于 2013-08-14T17:35:56.693 に答える
0

配列が持つことができる最高のインデックスを常に確認することを忘れないでください。あなたの場合、name.length()関数は文字列名のサイズを返します。

文字列が「JAVA」で、4文字が含まれているとします。したがって、name.length()4 が返されます。

ただし、各文字のインデックスは次のとおりです。

'J' - 0

'A' - 1

'V' - 2

'A' - 3

インデックス カウンターを 4 にすると、配列の境界に存在しないものにアクセスしようとします。したがって、ArrayIndexOutOfBoundsExceptionが発生します。

問題を解決するには、すべてのname.length()呼び出しをname.length() - 1. または、for ループを変更して、カウンターがname.length()

于 2014-02-25T16:28:09.710 に答える