我的java程序不能正常运行。

时间:2013-07-29 13:26:26

标签: java arrays variables while-loop

我是一名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”。我不知道我的代码有什么问题,但如果有人能告诉我这个问题,我将不胜感激。谢谢。

5 个答案:

答案 0 :(得分:5)

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

尝试最终阅读facebookFriends[8]。这是不可能的,因为它从0到7。

使用:

while (x < facebookFriends.length) {

代替。

答案 1 :(得分:3)

while (x <= 7)代替while (x <= 8)

Java中的数组,从0而不是1开始。

如果你看一下例外:

  

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

它告诉你出了什么问题。

答案 2 :(得分:1)

x <= 8应为x < 8

facebookFriends数组有8个元素(索引从07)。尝试访问此范围之外的任何位置都会导致ArrayIndexOutOfBoundsException例外。

答案 3 :(得分: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!");
    }    
}

答案 4 :(得分:0)

如果你真的想让它成为通用用途 而(X LT = facebookFriends.length) 这将确保即使阵列中的朋友数量增加或减少也能很好地运作