1

整数数组已经给出。偶数应该在偶数索引中,奇数应该在奇数索引中。您必须检查给定数组是否满足该条件。

我的实现在这里....

public void isSatisfied(int [] arr){

    for(int i=0;i<arr.length;i++){  

        int r_val=arr[i]%2;
        int r_index=i%2;

        if((r_val==1)&&(r_index==1)){

            if(i==arr.length-1){
                System.out.println("yes");
            }
            continue;
        }
        else if((r_val==0)&&(r_index==0)){
            if(i==arr.length-1){
                System.out.println("yes");
            }
            continue;
        }
        else{
            System.out.println("no");
            break;
        }
    }
}

什么是最好的实施?

4

5 回答 5

4

特定索引和该索引处的值的总和必须是even,否则数组不满足您的条件:

public boolean isSatisfied(int[] arr) 
{
    for (int i = 0; i < arr.length; i++) 
    {
        if ((i + arr[i]) % 2 != 0)
            return false;
    }
    return true;
}
于 2012-12-05T12:32:02.923 回答
1
public void isSatisfied(int [] arr){

    for(int i=0;i<arr.length;i++){  

        int r_val=arr[i]%2;
        int r_index=i%2;

        if(r_val!=r_index){
            System.out.println("no");
            return;
        }
    }
    System.out.println("yes");
}
于 2012-12-05T12:26:11.783 回答
1

“最佳”通常是一个意见问题。您的代码足够好,这里有一些提示:

1)不要将逻辑与演示混为一谈。在您的循环中,将状态(数组是否正确)保存到布尔变量。在循环之后,根据变量打印你想要的任何内容(这样你就不会重复几个“是”(并且后面可能会跟着一个“否”),我会觉得这很混乱。

2) 如果您使用该if-else-if构造,continue则不需要 s。使用另一种形式来提高可读性。

于 2012-12-05T12:30:19.997 回答
0

有一个名为isXreturn的方法更有意义boolean

public boolean isSatisfied(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        if (i % 2 == 0 && arr[i] % 2 != 0)
            return false;
        if (i % 2 == 1 && arr[i] % 2 == 0)
            return false;
    }
    return true;
}
于 2012-12-05T12:30:39.210 回答
0

这只是您的代码的一个小修改版本。包 com.mtk;

公共类 ArrayTest {

    public static void main(String[] args) {
        int[] arr = {2,3,4,5,6};        
        isSatisfied(arr);
    }

    private static void isSatisfied(int[] arr) {
        // TODO Auto-generated method stub
        for (int i = 0; i < arr.length; i++) {
            if( i%2 == 0 && arr[i]%2 == 0) ; // do nothing
            else if (i%2 == 1 && arr[i]%2 == 1) ; // do nothing
            else {
                System.out.println("No");
                return;
            }
        }
        System.out.println("Yes");
    }
}
于 2012-12-05T12:31:55.333 回答