[英]Reverse string printing method
我正在尝试解决以下问题,但是如何编写接受 String 作为参数的方法?
编写一个名为
printReverse
的方法,该方法接受一个String
作为参数并以相反的顺序打印字符。 如果空字符串作为参数传递,则该方法不应产生任何输出。 请务必编写一个main方法,以令人信服地演示您的程序的运行情况。 不要使用StringBuilder
或StringBuffer
类的反向方法!
到目前为止,我已经以更简单的方式解决了它:
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);
}
}
我强烈建议您阅读基本教程。
你可以简单地做:
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
因为您是从静态方式( main
方法)引用它的。 如果您不希望它是static ,则必须通过object访问它。
另请注意,始终为for
循环使用大括号是一种很好的做法,即使它包含一行也是如此。
如何编写接受 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;
}
像这样的东西:
public class StringUtils {
public static String reverse(String forward) {
String result = "";
// Put your code here
return result;
}
}
使用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𝕆𝕃
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);
试试这个:
private static String reverseString(String str) {
String revString = "";
for (int i = str.length() - 1; i >= 0; i--) {
revString = revString + str.charAt(i);
}
return revString;
}
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.