反向字符串方法

时间:2013-12-01 12:43:04

标签: java string reverse

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

  

编写一个名为printReverse的方法,接受一个String作为   参数并以相反的顺序打印字符。如果空了   string作为参数传递,该方法应该不产生输出。   一定要写一个令人信服地证明你的主要方法   计划在行动。不要使用相反的方法   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);
 }
}

7 个答案:

答案 0 :(得分:4)

我强烈建议您浏览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方法)引用的。如果您不希望它是静态,则必须通过对象访问它。

另请注意,对于for循环,总是使用大括号是一个好习惯,即使它包含一行。

答案 1 :(得分:3)

  

如何编写接受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;
}

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

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

答案 2 :(得分:2)

这样的事情:

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

答案 3 :(得分: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?

答案 4 :(得分:0)

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 + "\".");

}

在主要调用函数

printReverse(original);

答案 5 :(得分:0)

试试这个:

private static String reverseString(String str)
{
    String revString = "";

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

答案 6 :(得分:0)

public class Dowhile {
  package 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--;
     }  
  }
}