int currentKeySize=8;
String message = new String();
message="This is a test message";
String[] splitMessage = new String[currentKeySize];
Arrays.fill(splitMessage,"");
for (int i = 0; i < message.length(); ++i) {
splitMessage[i % splitMessage.length] += message.charAt(i);
}
for (int i = 0; i < splitMessage.length; ++i) {
System.out.println(splitMessage[i]);
}
Этот код принимает сообщение и разбивает его на массив размером 8, по одному символу в то время, поэтому char (0) переходит к String (0)... char (7) в String (7) и char (8) обратно в String (0).
У меня есть целая программа, работающая над этой концепцией, и это здорово... однако теперь мне нужно динамически модифицировать currentKeySize, предпочтительно используя цикл 'for', чтобы он переходил от 1 или 2 (количество разделов) к n (допустим, 20 разделов),
Я знаю ArrayList <String>, но мне не очень повезло с ним, поскольку это довольно новая концепция для меня. Я не могу понять, как заставить его работать аналогично тому, что у меня есть, с добавлением символов.
Может ли кто-нибудь продемонстрировать правильное использование ArrayList <String> (не принимал без пробелов между <>), чтобы он выполнял то же самое, что и выше?
Любая помощь будет оценена!
Решаемые. Спасибо micneer за то, что я просил =).
Вы можете попробовать это, желайте вам помощи.
int currentKeySize = 8;
String message = new String();
message="This is a test message";
List<String> list = new ArrayList<String>();
for (int i = 0; i < currentKeySize; ++i) {
list.add(i % currentKeySize, "");
}
for (int i = 0; i < message.length(); ++i) {
list.set(i % currentKeySize, list.get(i % currentKeySize) + message.charAt(i));
}
for (int i = 0; i < list.size(); ++i) {
System.out.println(list.get(i));
}
Вы можете сделать это. Поэтому вам не нужно беспокоиться об исходном размере.
String message = new String("This is a test message");
String[] splitMessage =message.split("");
public static void main(String[] args) {
int currentKeySize=8;
String EMPTY_STRING = "";
String message = new String();
message="This is a test message";
List<String> splitMessage = new ArrayList<String>();
Collections.fill(splitMessage, EMPTY_STRING);
for (int i = 0; i < message.length(); ++i) {
try {
String str = splitMessage.get(i%currentKeySize) + message.charAt(i);
splitMessage.set(i%currentKeySize, str);
} catch(IndexOutOfBoundsException e) {
//Adding EMPTY_STRING will convert character to String.
splitMessage.add(EMPTY_STRING+message.charAt(i));
}
}
System.out.println(splitMessage);
}
Я думаю, что этот фрагмент кода решит вашу проблему.
Вы можете просто добавить свою разделенную строку в ArrayList
:
Инициализировать список следующим образом:
List<String> list=new ArrayList<String>();
И позже добавьте к нему следующее:
list.add(spiltString);
Класс ArrayList
расширяет AbstractList
и реализует интерфейс List
. ArrayList
поддерживает динамические массивы, которые могут расти по мере необходимости.
Стандартные массивы Java имеют фиксированную длину. После создания массивов они не могут расти или сокращаться, а это значит, что вы должны заранее знать, сколько элементов будет удерживать массив.
Списки массивов создаются с начальным размером. Когда этот размер превышен, коллекция автоматически увеличивается. Когда объекты удаляются, массив может быть сокращен.