2014-09-12 3 views
-2

Я по-прежнему путаюсь с областью локальной переменной Этот код не работает, потому что i в «i & n» не разрешен. Я определил его для циклов как int i = 0. этого недостаточно? (Это добавление n-го символа в целом из нашей строки).Область локальной переменной

public String everyNth(String str, int n) { 
    String result = ""; 

    for (int i = 0; i <= str.length(); i++); { 
     if (i%n == 0) { 
      result = result + str.charAt(i); 
     } 
     else { 
      result = result; 
     } 
    } 
    return result;   
} 
+3

Какой смысл этого 'else' заявление? – Gary

+12

У вас есть точка с запятой в конце заголовка 'for' ', перед скобой. Избавиться от этого. –

+0

Отвечали ли они на ваш вопрос? – Rika

ответ

1

Чтобы расширить ответ, достойный комментарий Джона Скита, пол двоеточие в конце for (int i = 0; i <= str.length(); i++); закончит для-заявления, и я уже не в сфере после запятой.

+0

";" была основной ошибкой в ​​моем коде. У меня это есть, и это была отличная помощь! –

1

Вы несколько ошибок:

  1. Вы можете удалить еще {...} часть, потому что это не нужно.

  2. У вас есть дополнительный ';' в инструкции for for.

  3. Произошла ошибка в индексе цикла for. Вам нужно сделать 'i менее' str.length(), вместо i < = str.length(). В основном ваш цикл for попытается получить доступ к полноразмерному индексу вашего массива символов, но на самом деле он превышает длину. Например, индекс для строки 'hello' равен 0,1,2,3,4. Но «hello» .length() на самом деле 5. Если вы попытаетесь получить доступ к пятому индексу вашей строки, вы увидите исключение «java.lang.StringIndexOutOfBoundsException».

Кроме того, вы хотите получить каждое N-мерное значение (i-1)% n. Опять же, это из-за проблемы с индексом. Попробуйте подключить параметры в своей логике и использовать свой карандаш для записи результата, и вы поймете, почему.

И, конечно, когда i == 0, вы не хотите (0-1)% n произойти. Поэтому пропустите i == 0, добавив «i! = 0».

Теперь, следующий рабочий код:

public static String everyNth(String str, int n) { 
    String result = ""; 
    for (int i = 0; i < str.length(); i++) { 
     if ((i-1)%n == 0 && i!=0) 
      result = result + str.charAt(i); 
    } 
    return result;   
} 
+0

Это была отличная помощь! Спасибо!!! –

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