如何使用Java在字符串中n个零件的n个字符



例如,string =" abcdefgh"。如果n = 2,则输出应为" badcfehg";如果n = 3,则输出应为" CBAFEDHG"。我知道我应该使用StringBuilder逆转,但是如何将字符串分为n个部分,然后倒转每个部分?

我不会为您提供代码,您需要通过尝试学习。

逐步进行此要求:

  1. 如何按块读取String块:循环中的String.substring(int, int)。您需要了解如何计算每个块的界限
  2. 如何反转String:请参阅有关java中的字符串
  3. 中的反向
  4. 通过混合这两个步骤来创建输出。

不要尝试一次做所有事情。查找如何分离完成这两个,然后将逻辑放在一起。这很简单。

String newStr="";
String oldStr = "ABCDEFGH";
for(int i =0; i<oldStr.length();i+=n) {
    if(i+n >= oldStr.length()){
       n = oldStr.length()-i;
   }
   newStr += new StringBuilder(oldStr.substring(i,i+n)).reverse().toString();
}

编辑:对不起,对于读取问题而错过了,这个小循环可以完成您的要求!我们在这里做的是使oldString.length() / n迭代在n部分中拆分字符串。由于长度可能无法由您的n划分,因此我们必须检查i+n是否比单词的长度大(最终创建IndexOutOfBoundsException)。如果是这种情况,我们只是设置n,以便将其添加到其余单词中。希望很好地解释它。

我已经给了您大部分代码,但它未完成。您将必须了解我遗漏的内容以及如何解决问题以解决问题。

String originalString = someString;         //String from user
String tempString = "";                     //String used for temporary reasons
String finalString = "";                    //Your end result
int n = someNumber;                         //Number from user
//Loops through the original string, incrementing by n each time
for (int i = 0; i < originalString.length() - n; i += n)
{
    //Gives us the current substring to reverse
    tempString = originalString.substring(i, i + n);
    //Starts at end of substring and adds each char to the final string
    for (j = n - 1; j >= 0; j--)
    {
        finalString += tempString.charAt(j);
    }
}

最新更新