我试图制作一个简单的程序,比较一个数字或单词是一个回文。我做了以下代码,但我不知道为什么我的if语句不起作用。如果你打印结果,你可以看到数字或字母是相同的,但我的if语句并不这么认为。这是我的代码。谢谢:
import java.util.*;
public class myPalindromo
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
String number;
ArrayList < String > myNumber = new ArrayList < String > ();
Scanner sn = new Scanner(System.in);
number= sn.nextLine();
for(int i = 0 ; i<number.length() ; i++)
{
myNumber.add(number.valueOf(number.charAt(i)));
}
for(int i = 0; i<myNumber.size(); i++)
{
System.out.println(myNumber.get(i)+"=="+myNumber.get((myNumber.size()-1)-i));
if(myNumber.get(i)== myNumber.get((myNumber.size()-1)-i))
System.out.println("palindrome");
else
System.out.println("not palindrome");
}
}
}
答案 0 :(得分:0)
要检查字符串是否为回文,请尝试以下操作:
static boolean isPalindrome(String s) {
int center = (int)s.length()/2 - 1;
for (int i = 0; i <= center; i++) {
if (s.charAt(i) != s.charAt(s.length() - i-1) )
return false;
}
return true;
}
答案 1 :(得分:0)
您应该将If语句更改为此
if(Integer.parseInt(myNumber.get(i))== Integer.parseInt(myNumber.get((myNumber.size()-1)-i)))
那是因为你在比较字符串而不是实际数字。
答案 2 :(得分:0)
您可以在StringBuilder中使用reverse方法来完成此任务。
public static boolean isPalindrome(String str) {
return str.equals(new StringBuilder(str).reverse().toString());
}