Java: получение строки из Arraylist - PullRequest
5 голосов
/ 20 марта 2012

Когда я использую цикл for (например, так:)

  StringBuilder string = new StringBuilder();
    for(int i1 = 0; i1 < array.size()){
      string.append(arraylist.get(i).toString());
    } 

Я получаю аварийное завершение OutOfBouds. Мне нужно прочитать объект arraylist за объектом, поэтому arraylist.toString() ничего хорошего.

любая помощь? Спасибо

Ответы [ 5 ]

4 голосов
/ 20 марта 2012

Вам нужно увеличить переменную управления циклом.

for(int i=0; i<arraylist.size();i++){
   string.append(arraylist.get(i).toString());
}

Или

for(Object str:arraylist){
  string.append(str.toString());
} 
3 голосов
/ 20 марта 2012

Вы используете i1 в своем цикле, но вы получаете доступ к элементу i.

Эта путаница, вероятно, вызвана использованием неописательных имен переменных. Например, я вижу array и arraylist - те, которые должны быть одинаковыми?

Итак, первая проблема - это просто очистка кода. Если это не точный код, тогда покажите нам, что это такое. Также обратите внимание, что вы можете сделать блок кода, сделав отступ во все 4 пробела. Также неплохо показать нам, что такое трассировка стека.

В идеале, небольшая, полная программа, которую мы можем скомпилировать и показывающая нам ошибку, должна дать самый быстрый корректирующий ответ. Вы можете даже найти проблему, когда создаете эту маленькую программу.

2 голосов
/ 20 марта 2012

Столько ошибок всего в трех строках кода.В самом деле.Попробуйте это:

StringBuilder string = new StringBuilder();
for (int i1 = 0; i1 < arraylist.size(); i1++) {
    string.append(arraylist.get(i1).toString());
}

Или это:

StringBuilder string = new StringBuilder();
for (Object str : arraylist ) {
    string.append(str.toString());
}
1 голос
/ 20 марта 2012

Я бы написал так:

public static String concat(List<String> array, String separator) {
    StringBuilder builder = new StringBuilder(1024);
    for (String s : array) {
        build.append(s).append(separator);
    }
    return builder.toString();
}

Задумывались ли вы о том, как вы будете хранить каждую строку отдельно в объединенной версии? Хотите пространство между каждым? Это не выглядит очень полезным.

0 голосов
/ 20 марта 2012

Если вы используете Object любого типа, вам нужно переопределить метод toString ().и укажите строку, в которую вы хотите добавить строку.

...