我有一个问题,其中有两个字符串,只有在执行函数时我才能知道其中一个的长度。我想编写我的函数,使其采用这两种st式,并根据其中的一种较长,计算出最终字符串,如下所示:

finalString = longerStringChars1AND2
   + shorterStringChar1
   + longerStringChars3and4
   + shorterStringChar2
   + longerStringChars5AND6


...依此类推,直到SHORTER STRING结束为止。

较短的字符串结束后,我想将较长的字符串的其余字符附加到最终字符串,然后退出。我已经写了一些代码,但是我喜欢循环太多。有什么建议么?

这是我写的代码-非常基本-
        公共静态字节[] generateStringToConvert(String a,String b){
            (字符串b的长度通常为14。)

    StringBuffer stringToConvert = new StringBuffer();

    int longer = (a.length()>14) ? a.length() : 14;
    int shorter = (longer > 14) ? 14 : a.length();

    int iteratorForLonger = 0;
    int iteratorForShorter = 0;
            while(iteratorForLonger < longer) {
                int count = 2;
                while(count>0){
                    stringToConvert.append(b.charAt(iteratorForLonger));

                    iteratorForLonger++;
                    count--;
                    }

             if(iteratorForShorter < shorter && iteratorForLonger >= longer){
                 iteratorForLonger = 0;
             }
             if(iteratorForShorter<shorter){
                 stringToConvert.append(a.charAt(iteratorForShorter));
                 iteratorForShorter++;
             }
             else{
                 break;
             }


            }
    if(stringToConvert.length()<32 | iteratorForLonger<b.length()){
        String remainingString = b.substring(iteratorForLonger);
        stringToConvert.append(remainingString);
    }
    System.out.println(stringToConvert);
    return stringToConvert.toString().getBytes();

}

最佳答案

您可以使用StringBuilder来实现。请在下面找到源代码。

  public static void main(String[] args) throws InterruptedException {

    int MAX_ALLOWED_LENGTH = 14;
    String str1 = "yyyyyyyyyyyyyyyy";
    String str2 = "xxxxxx";

    StringBuilder builder = new StringBuilder(MAX_ALLOWED_LENGTH);
    builder.append(str1);
    char[] shortChar = str2.toCharArray();
    int index = 2;
    for (int charCount = 0; charCount < shortChar.length;) {
        if (index < builder.length()) {
            // insert 1 character from short string to long string
            builder.insert(index, shortChar, charCount, 1);
        }
        // 2+1 as insertion index is increased after after insertion
        index = index + 3;
        charCount = charCount + 1;
    }
    String trimmedString = builder.substring(0, MAX_ALLOWED_LENGTH);
    System.out.println(trimmedString);

}


输出量

   yyxyyxyyxyyxyy

关于java - Java中的花式循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12247372/

10-12 00:33
查看更多