我正在尝试编写一个程序来检查字符串是否是回文,到目前为止,我知道我在正确的路径上,但是当我输入代码时,它将永远运行。我不知道问题出在哪里,希望能帮助您找到解决方案。在我的程序中,我希望用户在Printpalindrome方法中输入一个或多个单词,然后程序应知道字符串是否为回文。
这是我的代码:
...
Scanner console = new Scanner (System.in);
String str = console.next();
Printpalindrome(console, str);
}
public static void Printpalindrome(Scanner console, String str) {
Scanner in = new Scanner(System.in);
String original, reverse = "";
str = in.nextLine();
int length = str.length();
for ( int i = length - 1; i >= 0; i-- ) {
reverse = reverse + str.charAt(i);
}
if (str.equals(reverse))
System.out.println("Entered string is a palindrome.");
}
}
由于这一行:
n = in.nextLine();
您的程序正在等待第二个输入,但是在进入该功能之前,您已经有一个输入。
删除此行,它可以工作。
这是您的程序,已清理(并经过测试):
public static void main(String[] args){
Scanner console = new Scanner (System.in);
String n = console.next();
Printpalindrome(n);
}
public static void Printpalindrome(String n){
String reverse = "";
for ( int i = n.length() - 1; i >= 0; i-- ) {
reverse = reverse + n.charAt(i);
System.out.println("re:"+reverse);
}
if (n.equals(reverse))
System.out.println("Entered string is a palindrome.");
else
System.out.println("Entered string is NOT a palindrome.");
}
当然,这不是最好的算法,但是您已经知道,SO上有许多QA具有更快的解决方案(提示:不要构建字符串,只比较字符)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句