我是一名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”。我不知道我的代码有什么问题,但如果有人能告诉我这个问题,我将不胜感激。谢谢。
答案 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个元素(索引从0
到7
)。尝试访问此范围之外的任何位置都会导致ArrayIndexOutOfBoundsException
例外。
答案 3 :(得分:0)
正如其他人已经指出的那样,它应该是x <= 7
,x < 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) 这将确保即使阵列中的朋友数量增加或减少也能很好地运作