如何解决回文程序没有按预期工作
我知道这对这里的专家来说是一件非常微不足道的事情,但我想检查为什么我的回文程序没有按预期工作,它显示为我输入的每个数字或字符串的回文,你能看看问题出在哪里吗,请。 实际上我正在尝试自己创建这个程序,而不是检查任何现成的方法,所以在这里问。请帮忙。 这是我的程序
import java.util.*;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("enter the number");
String k = sc.next();
int s = k.length()/2;
boolean b = true;
while(s>0){
for (int i = 0; i<=s; i++) {
if(k.charAt(i)==k.charAt(s)){
b = true;
}
}
if (b)
s--;
else
System.out.println("exit");
}
if(b)
System.out.println("palindrome");
}
}
解决方法
s
是中点,您正在循环中修改它。此外,在任何情况下都不要将 b
设置为 false
。修复这两个错误,应该会给你类似
Scanner sc = new Scanner(System.in);
System.out.println("enter the number");
String k = sc.next();
int s = k.length() / 2;
boolean b = true; // <-- Default to true
for (int i = 0; i <= s; i++) { // <-- Only need one loop.
if (k.charAt(i) != k.charAt(k.length() - i - 1)) {
b = false; // <-- Only need to update when it isn't a palindrome.
break; // <-- terminate the loop.
}
}
if (b) { // <-- Use braces. Even when optional.
System.out.println("palindrome");
}
,
您最好编写一个简单的方法来进行检查并使用您的输入调用该方法。
Scanner sc = new Scanner(System.in);
System.out.println("enter the number");
String str = sc.next();
System.out.printf("'%s' %s%n",str,(isPalindrome(str) ? "is " : "is not ") + "a palindrome.");
对于 radar
和 abcdcbc
打印的输入
'radar' is a palindrome.
'abcdcbc' is not a palindrome.
方法
public static boolean isPalindrome(String str) {
int len = str.length();
for (int i = 0; i < len / 2; i++) {
if (str.charAt(i) != str.charAt(len - i - 1)) {
return false; // return as soon as characters don't match
}
}
// if the program gets this far,the string must be a palindrome
return true;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。