如何将两个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()(不含),但会导致每次迭代都返回另一个字符。

07-24 18:56