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,最好使用&#39; for&#39;循环所以从1或2(分裂数)到n(比如20分裂)。
我知道ArrayList&lt;字符串&gt;但是我没有太多运气,因为它对我来说是一个非常新的概念。我无法弄清楚如何让它以类似的方式与我在这里附加字符一起工作。
有人可以证明正确使用ArrayList&lt;字符串&gt;(不接受&lt;&gt;之间没有空格)以执行与上面发布的相同的方式?
任何帮助将不胜感激!
解决。 感谢micneer正是我所要求的=)。
答案 0 :(得分:0)
您只需将分割字符串添加到ArrayList
:
将列表初始化如下:
List<String> list=new ArrayList<String>();
后来又加入了以下内容:
list.add(spiltString);
ArrayList
类扩展AbstractList
并实现List
接口。 ArrayList
支持可根据需要增长的动态数组。
标准Java数组具有固定长度。创建数组后,它们无法增长或缩小,这意味着您必须事先知道数组将包含多少元素。
使用初始大小创建数组列表。超过此尺寸时,将自动放大该集合。删除对象后,阵列可能会缩小。
答案 1 :(得分:0)
您可以尝试这样做,希望能帮助您。
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));
}
答案 2 :(得分:0)
你可以这样做。所以你不必担心初始大小。
String message = new String("This is a test message");
String[] splitMessage =message.split("");
答案 3 :(得分:0)
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);
}
我认为这段代码可以解决您的问题。