1

私は Java の初心者で、次のコードを書きました。

class Friends {
    public static void main(String[] args) {
        String[] facebookFriends = { "John", "Joe", "Jack", "Lucy", "Bob", "Bill", "Sam", "Will" };
        int x = 0;
        while (x <= 8) {
            System.out.println("Frind number " + (x + 1) + " is " + facebookFriends[x]);
            x++;
        }
        System.out.println("");

        if (facebookFriends.length < 5) {
            System.out.println("Where are all you're friends?");
        }
        else if (facebookFriends.length == 5) {
            System.out.println("You have a few friends...");
        }
        else {
            System.out.println("You are very sociable!");
        }
    }    
}

プログラムを実行すると、名前は正しく読み取られますが、「あなたには友達が数人います...」や「あなたはとても社交的です!」などのテキストは表示されません。また、実行すると、3 番目と 4 番目の名前の間に「Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8」と表示されます。コードの何が問題なのかわかりませんが、誰かが問題を教えてくれたらありがたいです。ありがとうございました。

4

5 に答える 5

5
while (x <= 8) {
   System.out.println("Frind number " + (x + 1) + " is " + facebookFriends[x]);
   x++;
}

最終的に を読み取ろうとしますfacebookFriends[8]。0 から 7 まで変化するため、これは不可能です。

使用する:

while (x < facebookFriends.length) {

代わりは。

于 2013-07-29T13:28:22.553 に答える
3

while (x <= 7) それ以外の while (x <= 8)

Java の配列は、1 ではなく 0 から始まります。

例外を見ると:

「スレッド「メイン」での例外 java.lang.ArrayIndexOutOfBoundsException: 8」

何がうまくいかなかったのかがわかります。

于 2013-07-29T13:27:51.410 に答える
1

x <= 8する必要がありますx < 8

facebookFriends配列には 8 つの要素があります (インデックスは からまで0) 7。この範囲を超える位置にアクセスしようとすると、ArrayIndexOutOfBoundsException例外が発生します。

于 2013-07-29T13:28:51.733 に答える
0

他の人がすでに指摘しているように、Java 配列はゼロ (0) ベースであるため、それはx <= 7x < 8またはそれよりも優れているはずです。x < facebookFriends.length

コードを記述する別の方法は次のとおりです。

class Friends 
{
    public static void main(String[] args)
    {
        String[] facebookFriends = { "John", "Joe", "Jack", "Lucy", "Bob", "Bill", "Sam", "Will" };

        int length = facebookFriends.length;
        int num = 1;
        for ( String friend: facebookFriends )
            System.out.println("Friend number " + (num++) + " is " + friend);

        System.out.println("");

        if (length < 5)
            System.out.println("Where are all your friends?");
        else if (length == 5)
            System.out.println("You have a few friends...");
        else
            System.out.println("You are very sociable!");
    }    
}
于 2013-07-29T13:37:59.540 に答える