回文检查器似乎会将单个字符以上的每个数字都转储到我的else语句中



当我将此部分切换到isPali=True:时,我已经执行了一些测试

else{ 
    isPali = false;
    p = n;
} 

我测试的所有数字都被认为是回文。所以出于某种原因,我上面两个字符上的任何数字都会被丢弃到其他字符中。我试过检查桌子,但一直无法确定原因。

正常运行时的输出为0到9,然后为零。

public class Palindromorizor{
    public static void main (String[] args){
        String inputString, limit; 
        int n, p, numLim, num = 0;
        boolean isPali;
        limit = JOptionPane.showInputDialog("What is your limit?");
        numLim = Integer.parseInt(limit);
        while(num < numLim){
            isPali = isPalindrome(num);
            if(isPali == true){
                System.out.print(num + " ");
                ++num;
            }
            else{
                ++num;
            }
        }
    }
    public static boolean isPalindrome(int num){
        String strNum;
        int n = 0;
        int p;
        boolean isPali = true;
        strNum = "" + num;
        p = strNum.length();
        //strNum.substring(p - 1, p) + " " + p + " " + n + " " + strNum + " " + isPali);
        while(p > n){
            if(strNum.substring(n, n + 1) == strNum.substring(p - 1, p) && (p <= n)){
                isPali = true;
            }
            else if(strNum.substring(n, n + 1) == strNum.substring(p - 1, p) && (p > n)){
                ++n;
                --p;
            }
            else{
                isPali = false;
                p = n;
            }
        }
        return isPali;
    }
}

因为您将字符串与==运算符进行比较。使用equals方法。

最新更新