Java程序在执行时不会挂起

时间:2015-08-25 23:14:57

标签: java jvm

当我运行这个程序时,它会挂起,是否与代码有关?因为如果是的话,我无法发现这个错误。

public class PalindromeSolution {
    public static void main(String [] args) {
        String [] arr;
        String s1 = "taco cat";
        boolean palindrome = true;

        s1 = s1.replaceAll("\\s", "");
        arr = s1.split("(?!^)");

        int i = 0;
        while(i < arr.length) {
            if(arr[i] == arr[(arr.length - 1) - i]) {
                i++;
            } else {
                palindrome = false;
                break;
            }   
        }
        System.out.println("Is palindrome: " + palindrome);
    }
}

2 个答案:

答案 0 :(得分:1)

它不适合我。但这是不正确的, 因为你不应该将字符串与==进行比较, 你应该使用.equals()。 通过此更改,它将正确运行:

    if(arr[i].equals(arr[(arr.length - 1) - i])) {

......虽然很差:

  • 为什么分裂成字符串?更好地使用s1.toCharArray()
  • 为什么要迭代arr.length? <{1}}就足够了
  • arr.length / 2循环比for循环
  • 更自然

像这样:

while

答案 1 :(得分:0)

您可以使用StringBuffer来保持代码简单:

s1 = s1.replaceAll("\\s", "");
StringBuffer str2=new StringBuffer(s1);
str2.reverse();
if(str2.toString().equals(s1))
     return true;
else 
     return false