Java 我的i/p是;“欢迎来到课堂”;我的o/p应该是;ssa lc eh t ot emoc leW“;使用stringbuilder

Java 我的i/p是;“欢迎来到课堂”;我的o/p应该是;ssa lc eh t ot emoc leW“;使用stringbuilder,java,arrays,string,Java,Arrays,String,我正在将字符串转换为数组以将其反转。我应该如何继续获得所需的输出。将为您完成这项工作 使此字符序列替换为 序列如果序列中包含任何代理项对, 对于反向操作,这些字符被视为单个字符。 因此,高低替代项的顺序永远不会颠倒。让我们 此字符序列的字符长度(不是中的长度) 字符值)在执行反向方法之前。然后 新字符序列中索引k处的字符等于 旧字符序列中索引n-k-1处的字符 请注意 反向操作可能导致生成的代理项对 操作前未配对的低代理和高代理。对于 例如,反转“\uDC00\uD800”会产生“\uD800\

我正在将字符串转换为数组以将其反转。我应该如何继续获得所需的输出。

将为您完成这项工作

使此字符序列替换为 序列如果序列中包含任何代理项对, 对于反向操作,这些字符被视为单个字符。 因此,高低替代项的顺序永远不会颠倒。让我们 此字符序列的字符长度(不是中的长度) 字符值)在执行反向方法之前。然后 新字符序列中索引k处的字符等于 旧字符序列中索引n-k-1处的字符

请注意 反向操作可能导致生成的代理项对 操作前未配对的低代理和高代理。对于 例如,反转“\uDC00\uD800”会产生“\uD800\uDC00”,这是一个 有效的代理项对


这是我能想到的两种简单的反转字符串的方法

public static void main(String[] args) {
        StringBuilder r = new StringBuilder("Welcome to the class");
        for (int i = r.length(); i > 0; i--) {
            System.out.print(r.charAt(i - 1));
        }
        System.out.println("\n" + r.reverse());//this is also another way to do it.
}
注意:“r.reverse()”修改原始StringBuilder对象

以下是解决方案: StringBuilder r=新的StringBuilder(“欢迎来到课堂”)

String[]parts=r.reverse().toString().split(“”);
字符串finalValue=“”;
StringBuffer str1;
对于(int i=0;i2)
{
str1=新的StringBuffer(第[i]部分);
str1.insert((int)Math.ceil((parts[i].length())/2)+1';
第[i]部分=str1.toString();
}
}
对于(int i=0;i

如果你看得清楚,它会在每个单词之间留出一个空格。。以欢迎为例。相反,这将是一种表情。。这是一个7个字母的单词。。将emoc lew一分为二

请发布实际代码,而不是图像。此外,这与javascript无关。复制粘贴代码比抓拍代码并将其放在此处更容易。这是您的笔记。。。几乎每个
StringBuilder上的操作都会修改它。这就是使用
StringBuilder
而不是
String
@abishek的要点,我面临的问题是反面之间的空间order@VisaaliSundaram你能更详细一点吗。。。。您的问题没有说明任何有关空格的问题。。。上面的代码只正确地按相反顺序打印字符串。@StephenC感谢您的提醒。今天学到了一些新东西…@abishek,例如;我的i/p是“我的名字”,我的o/p是“eman yM”,带有您的代码。但我需要o/p为“em an y M”。
     String[] parts = r.reverse().toString().split(" ");
     String finalValue="";
StringBuffer str1 ;
     for (int i = 0; i < parts.length; i++) 
     {
         if(parts[i].length()>2)
         {
           str1=new StringBuffer (parts[i]);
             str1.insert((int)Math.ceil((parts[i].length())/2)+1,' ');
           parts[i]=str1.toString();

         }
     }
     for (int i = 0; i < parts.length; i++) 
     {
         finalValue +=parts[i] +" ";
     }
    System.out.println(finalValue.trim());