我正在尝试解决以下问题但是如何编写接受String作为参数的方法?
编写一个名为
printReverse
的方法,接受一个String作为 参数并以相反的顺序打印字符。如果空了 string作为参数传递,该方法应该不产生输出。 一定要写一个令人信服地证明你的主要方法 计划在行动。不要使用相反的方法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);
}
}
答案 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 manner(main
方法)引用的。如果您不希望它是静态,则必须通过对象访问它。
另请注意,对于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--;
}
}
}