Как заполнить массив циклом Java for-each? - PullRequest
2 голосов
/ 28 августа 2011

Я ранее опубликовал вопрос , пытаясь найти ошибку в моем коде, и главная проблема заключалась в том, что я неправильно использовал a для каждого цикла.Я новичок в Java, и мне было интересно, почему то, что я пытался сделать, было неверным и есть ли какой-либо возможный способ выполнить задачу с каждым циклом.

public Dids(String thing)
{
    letters= new char[thing.length()];  
    for(char i: letters){
        letters[i] = thing.charAt(i);
    }
}

Я думал, что с тех пор какобъявил размер массива перед циклами, чтобы я мог перебирать его.

Ответы [ 3 ]

3 голосов
/ 28 августа 2011

В конструкциях foreach для текущего индекса нет счетчика, только значение в индексе. Переменная 'i' является значением в текущей точке массива.

Вы можете сделать это с помощью обычного цикла for

for (int i=0; i<letters.length; i++)
   letters[i] = thing.charAt(i);

Или, точнее,

char[] letters = thing.toCharArray();

См. String.toCharArray ()

1 голос
/ 28 августа 2011

Ваша переменная 'i' принимает значение каждого символа в 'букв'.Это не индекс, так что буквы [i] на самом деле не имеют никакого смысла.

Конструкция 'foreach' над коллекцией действительно только помогает по сравнению с традиционным циклом for, если вам нужно выполнить действие, основанное на значениикаждый элемент в коллекции.Если вам также нужно использовать индексы в коллекции, традиционный цикл for будет проще.

0 голосов
/ 28 августа 2011

Если вы хотите преобразовать строку в массив символов (что, как вам кажется, нужно сделать), просто используйте String # toCharArray ()

char[] letters = thing.toCharArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...