我使用以下代码
创建了一个字符串数组public class Main
{
static String[] words = {"watch", "on", "youtube",":","Mickey","en","de","stomende","drol"};
public static void main(String[] args)
{
String output = "";
for(int i = 1 ; i <= words.length ; i++)
{
output += " " + words[i];
}
System.out.println(output);
}
}
我期望收到的输出是:
&#34;在youtube上观看:Mickey en de stomende drol&#34;
但实际输出是
&#34;在youtube上:Mickey en de stomende drol&#34;
我想我犯了一个小错误,它是怎么来的?
答案 0 :(得分:7)
但实际输出是
[...]
不是您发布的代码。您发布的代码无法编译,因为:
ArrayIndexOutOfBoundsException
,原因与错过第一个元素的原因基本相同 - 见下文。此:
for(int i = 1 ; i <= words.length ; i++)
应该是:
for (int i = 0; i < words.length; i++)
请注意,启动索引和循环条件都已更改。后者是表达从0(包括)到独占上限的循环的惯用方式。
Java中的数组是基于0的 - 例如,长度为4的数组的有效索引为0,1,2和3.有关详细信息,请参阅Java arrays tutorial。
(顺便说一句,像这样重复的字符串连接通常是一个坏主意。在你的情况下这不是问题,因为价值很少,但你应该了解StringBuilder
。)< / p>
答案 1 :(得分:1)
循环上的索引必须以0 for int i=0; .....
开头,因为java中的数组从位置0开始并以长度-1结束
答案 2 :(得分:1)
你的循环应该是这样的
for(int i=0; i<words.length; i++)
答案 3 :(得分:1)
错误如下: -
1.如果您已经使用从0开始的参数初始化了您的单词数组,那么您必须从0开始for循环。
2.您的问题中存在轻微错误,并且在我的问题中已经编辑过,将单词声明为静态和分号错误。
这是您的代码正常运行: -
public class Main {
static String[] words = {"watch", "on", "youtube",":","Mickey","en","de","stomende","drol"};
public static void main(String[] args){
String output = "";
for(int i = 0 ; i <= words.length-1 ; i++)
{
output += " " + words[i];
}
System.out.println(output);
}
}