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!");
        }
    }    
}

当我运行程序时,它会正确读取名称,但不会显示任何文本,例如“你有几个朋友......”或“你很善于交际!” 此外,当我运行它时,它在第三个和第四个名称之间显示“线程“主”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 中的数组,从 0 开始,而不是 1。

如果您查看异常:

“线程“主”中的异常 java.lang.ArrayIndexOutOfBoundsException:8”

它告诉你出了什么问题。

于 2013-07-29T13:27:51.410 回答
1

x <= 8应该是x < 8

facebookFriends数组有 8 个元素(索引 from07)。试图访问超出此范围的任何位置都会导致ArrayIndexOutOfBoundsException异常。

于 2013-07-29T13:28:51.733 回答
0

正如其他人已经指出的那样,它应该是x <= 7x < 8或者更好x < facebookFriends.length,因为 Java 数组是基于零 (0) 的。

另一种编写代码的方法是:

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 回答
0

如果你真的想让它通用使用 while(x<=facebookFriends.length) 这将确保即使数组中的朋友数量增加或减少它也能正常工作

于 2013-07-29T13:46:00.300 回答