【问题标题】:Reverse string printing method反向字符串打印方法
【发布时间】:2013-12-17 05:04:59
【问题描述】:

我正在尝试解决以下问题,但是如何编写接受 String 作为参数的方法?

编写一个名为printReverse 的方法,它接受String 作为 参数并以相反的顺序打印字符。如果空 字符串作为参数传递,该方法不应产生任何输出。 一定要编写一个 main 方法来令人信服地展示你的 程序在行动。不要使用相反的方法 StringBuilderStringBuffer 上课!

到目前为止,我已经以更简单的方式解决了它:

import java.util.Scanner;

class ReverseString {
    public static void main(String args[]) {
        String original, reverse = "";
        Scanner in = new Scanner(System.in);

        System.out.println("Enter a string to reverse");
        original = in.nextLine();

        int length = original.length();

        for (int i = length - 1; i >= 0; i--)
            reverse = reverse + original.charAt(i);

        System.out.println("Reverse of entered string is: " + reverse);
    }
}

【问题讨论】:

    标签: java string methods reverse


    【解决方案1】:
    private static void printReverse(String org) {
        StringBuffer buffer = new StringBuffer(org);
        String reversedStr = buffer.reverse().toString();
        System.out.println("The reverse of the string \""
                + str + "\" is \"" + reversedStr + "\".");
    }
    

    在main调用函数

    printReverse(original);
    

    【讨论】:

      【解决方案2】:

      使用 Java 9 你可以实现类似的东西。此代码适用于常规字符和代理对

      public static void printReverse(String str) {
          // character code points
          str.codePoints()
                  // character as string
                  .mapToObj(Character::toString)
                  // concatenate in reverse order
                  .reduce((a, b) -> b + a)
                  // output
                  .ifPresent(System.out::println);
      }
      
      public static void main(String[] args) {
          // regular characters
          printReverse("lorem ipsum");
          // surrogate pairs
          printReverse("\uD835\uDD43\uD835\uDD46R\uD835\uDD3C\uD835\uDD44" +
                  " \uD835\uDD40P\uD835\uDD4A\uD835\uDD4C\uD835\uDD44");
      }
      

      输出:

      muspi merol
      ???P? ??R??
      

      另见:Is there any other way to remove all whitespaces in a string?

      【讨论】:

        【解决方案3】:
        package dowhile;
        public class Dowhile {
            public static void main(String[] args) {
                // TODO code application logic here
                String message = "i love java programming";
                int msglength = message.length();
        
                int index = msglength - 1;
                while (index >= 0) {
                    System.out.print(message.charAt(index));
                    index--;
                }
            }
        }
        

        输出:

        gnimmargorp avaj evol i
        

        【讨论】:

          【解决方案4】:

          试试这个:

          private static String reverseString(String str) {
              String revString = "";
          
              for (int i = str.length() - 1; i >= 0; i--) {
                  revString = revString + str.charAt(i);
              }
              return revString;
          }
          

          【讨论】:

            【解决方案5】:

            我强烈建议您通过basic tutorial

            你可以这样做:

            private static String myReverse(String str) {
                String reverse = "";
                int length = str.length();
                for( int i = length - 1 ; i >= 0 ; i-- ) {
                   reverse = reverse + str.charAt(i);
                }
                return reverse;
            }
            

            在您的main 中,您只需:

            String reversed = myReverse(in.nextLine());
            

            请注意,方法static,因为您是从static mannermain 方法)引用它。如果您不希望它是 static,则必须通过 object 访问它。

            另请注意,对于 for 循环,始终使用大括号是一种很好的做法,即使它包含单行也是如此。

            【讨论】:

              【解决方案6】:

              如何编写接受String作为参数的方法?

              public static String reverse(String forward) {
                 char[] strChar = forward.toCharArray();
                 String reverse = "";
              
                 for( int i = strChar.length - 1 ; i >= 0 ; i-- ) 
                     reverse = reverse + strChar[i];
              
                 return reverse;
              }
              

              但是对于带有+ 运算符的大字符串附加字符可能效率低下。使用上述方法反转字符串将导致 uni-code 不匹配错误。因为它反转了代码单元而不是字符。实际上有一个内置支持可以使用 StringBuilder 反转字符串,它可以正常工作:

              public static String reverse(String forward) {
                 StringBuilder builder = new StringBuilder(forward);
                 String reverse = builder.reverse().toString();
                 return reverse;    
              }
              

              【讨论】:

                【解决方案7】:

                类似这样的:

                public class StringUtils {
                    public static String reverse(String forward) {
                        String result = "";
                        // Put your code here
                        return result;
                    }
                }
                

                【讨论】:

                  猜你喜欢
                  • 2022-06-18
                  • 1970-01-01
                  • 2013-12-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-04-05
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多