如何将两个char数组与尽可能多的重复字符对齐?这就是我得到的。
public class Repeat {
public static void main(String[] args) {
String Foo = "HELLO";
String Boo = "VEX";
char [] Key = new char[Foo.length()];
for(int i = 0; i < Foo.length(); i++) {
for(int j = 0; j < Key.length; j++) {
if(i < Boo.length()) {
Key[i] = Boo.charAt(i);
}
}
}
for(char c : Key) {
System.out.print(c + " ");
}
}
}
当前它打印出
V E X [ ] [ ]
我要打印密钥
V E X V E
所以它与
H E L L O
最佳答案
我不知道为什么要做这样的事情,但是您可以使用模运算符%
以及较短和较长的字符串长度来实现您想要的操作。像这样:
String longString = "abcde";
String shortString = "abc";
char[] array = new char[longString.length()];
for(int i = 0; i < array.length(); i++) {
array[i] = shortString.charAt(i % shortString.length());
}
如果随后输出
array
的内容,则应该得到abcab
。该代码如何工作
for
循环从0到array
(等于longString.length()
)的长度减去1进行迭代。这确保可以在以下位置初始化数组的所有元素(0、1,...,array.length() - 1
)循环的身体。语句
i % shortString.length()
确定应从shortString
检索的字符的位置。由于i
可能大于或等于shortString.length()
(如果用作shortString.charAt(int)
的参数,则会导致异常),因此必须添加模运算符,以确保shortString.charAt(int)
的参数保持在范围从0(含)到shortString.length()
(不含),但会导致每次迭代都返回另一个字符。