while循环条件,不等于且大于]之间的差>

问题描述 投票:0回答:1

我在检查整数是否为回文时遇到问题。逻辑是我将其转换为字符串,然后设置第一个和最后一个的索引。我遍历每个第一个和最后一个索引,如果它们是回文,则值应该匹配。在循环中,我将第一个索引增加一个,将最后一个索引减少一个。所以最终他们将在一半见面。我最初遇到的循环条件是两个索引都不相同。但这给了我String索引超出范围的异常。但是,当我将其更改为循环播放时,只要开始小于结束,它就可以工作。

public boolean isPalindrome(int x) {

        if(x < 0) {
            return false;
        }       
        String val = String.valueOf(x);

        int end = val.length()-1;
        int start = 0;
        while(start != end) {
            if(val.charAt(start) != val.charAt(end)) {
                return false;
            }
            start++;
            end--;
        }

        return true;
    }
    }

当我这样做的时候就可以工作>

 if(str.charAt(start++) < str.charAt(end--)) return false;

我在检查整数是否为回文时遇到问题。逻辑是我将其转换为字符串,然后设置第一个和最后一个的索引。我遍历每个第一个和最后一个索引以及...

java
1个回答
0
投票

如果长度为偶数,则有问题。例如,如果length为4,则将运行:

START | END
0     3
1     2
2     1
3     0
4     -1 <--- error

0
投票

问题是由于数字中的数字位数:

© www.soinside.com 2019 - 2024. All rights reserved.