我的i / p是“欢迎来到班级”,我的o / p应该是“ssa lc eh tot emoc leW”使用stringbuilder

时间:2016-07-11 07:41:27

标签: java arrays string

将String转换为数组以反转它。我该如何继续获得所需的输出。Source Code

3 个答案:

答案 0 :(得分:1)

StringBuilder#reverse将为您完成工作

  

使该字符序列被替换为   序列。如果序列中包含任何代理对,   这些被视为反向操作的单个字符。   因此,高低代理人的顺序永远不会逆转。设n是   这个字符序列的字符长度(不是长度)   char值)就在执行反向方法之前。那么   新字符序列中索引k处的字符等于   旧字符序列中索引为n-k-1的字符。

     

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

答案 1 :(得分:0)

这是我可以想到的两种简单方法来反转字符串......

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对象。

答案 2 :(得分:0)

以下是解决方案:       StringBuilder r = new StringBuilder(“欢迎使用该类”);

     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());

如果你看清楚,它会在每个单词之间留一个空格。以欢迎为例。相反,它将是emoclew ..这是7个字母的单词..分成两半emoc lew