布尔数组值比较

时间:2016-01-28 03:24:58

标签: java arrays boolean palindrome

我必须使用isPalindrom()方法比较数组中的布尔值。如果阵列是或不是回文,我不能让我的程序准确地返回答案。当我打算使用非回文答案时,它总是返回true而不是false。 代码:

 public Boolean isPalindrome()
 {
    Boolean result = true;
    for(int i=0;i<bits.length;i++)
    {
        Boolean a = bits[i];
        Boolean b = bits[bits.length - i - 1];
        if(a!=b)
            result = false;      
    }
    return result;    
 }

4 个答案:

答案 0 :(得分:1)

也许使用Integer类型(如果值都是数字)比(a)和(b)的布尔值更好?

public Boolean isPalindrome()
     {
        Boolean result = true;
        for(int i=0;i<bits.length;i++)
        {
            int a = bits[i];
            int b = bits[bits.length - i - 1];
            if(a!=b)
                return false;      
        }
        return true;    
     }

答案 1 :(得分:1)

而不是!=使用下面的代码

if(!(a.Equals(b)))

希望它有效。

答案 2 :(得分:1)

尝试以下代码:

public class TestC {

    public static void main(String[] args) {
        Boolean[] bits = { Boolean.FALSE, Boolean.TRUE, Boolean.FALSE,
                Boolean.FALSE };
        Boolean[] bits1 = { Boolean.TRUE, Boolean.TRUE, Boolean.TRUE,
                Boolean.TRUE };
        Boolean[] bits2 = { Boolean.FALSE, Boolean.TRUE, Boolean.FALSE };
        System.out.println(isPalindrome(bits));
        System.out.println(isPalindrome(bits1));
        System.out.println(isPalindrome(bits2));

    }

    public static Boolean isPalindrome(Boolean[] bits) {
        Boolean result = true;
        for (int i = 0; i < bits.length; i++) {
            Boolean a = bits[i];
            Boolean b = bits[bits.length - i - 1];
            if (a != b)
                result = false;
        }
        return result;
    }
}

答案 3 :(得分:0)

该方法看起来是正确的,即使它不是优化/有效的方法。它应该为回文测试返回正确的真/假。你能提供你正在测试的输入集吗?