2015-03-25 3 views
0

Я сделал массив строк с следующий кодНеожиданный выход с массивом строк

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

Что я ожидал получить, как выход был:

«Смотрите на YouTube: Микки ан-де-stomende drol "

Но фактический выход был

«на YouTube: Микки ан-де-stomende drol»

Я думаю, что я сделал небольшую ошибку, как она приходит?

+0

вы начинаете за петлю со значением индекса г = 1 вместо г = 0 – user1055604

ответ

1

Ошибок заключаются в следующих : -

1. Когда вы инициализировали массив слов с аргументом, начинающимся с 0, вы должны начать цикл for из 0.

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); 
} 
} 
1

Ваш индекс цикла должен начинаться с 0 for int i=0; ....., как массивы в начале Java в позиции 0 и заканчивается в длину-1

1

Ваш цикл должен быть, как этот

for(int i=0; i<words.length; i++) 
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.)

Смежные вопросы