查找数组中的最后一个零索引

时间:2013-02-02 00:26:33

标签: java

我编写了以下代码来查找数组中的最后一个零索引:

public class Stack {
    public static void main(String[] args){
        int[] a=new int[5];
        a[0]=1;
        a[1]=0;
        a[2]=90;
        a[3]=0;
        a[4]=4;
        findLast(a);
    }
    public static int findLast(int[] x){
        for(int i=0;i<x.length;i++){
         if(x[i]==0){
             System.out.println(i);             
         }
        }
        return 0;
    }
}

输出如下:

1
3

我真正想要的是索引3。

6 个答案:

答案 0 :(得分:6)

  • 从数组末尾开始(即i=x.length-1
  • 减少i而不是递增(即使用i--
  • 一旦达到零就停止(即在break之后添加println)。
  • 使你的停止条件成为循环处理索引为零的元素。

答案 1 :(得分:3)

只需将循环从x.length-1转换为0并在第一场比赛时返回索引:

public static int findLast(int[] x) {
    for (int i=x.length-1; i>=0; i--) {
        if (x[i] == 0) {
            // match found, return index
            return i;
        }
    }
    // no match found, return invalid index
    return -1;
}

答案 2 :(得分:2)

public class Stack {
    public static void main(String[] args){
        int[] a=new int[5];
        a[0]=1;
        a[1]=0;
        a[2]=90;
        a[3]=0;
        a[4]=4;
        findLast(a);
    }
    public static void findLast(int[] x){
        for(int i=x.length()-1;i>0;i++){
        if(x[i]==0){
            System.out.println(i);
            break;
        }
    }
}

}

答案 3 :(得分:0)

如果你的约束是从头开始遍历数组,那么当你看到0变量时,将索引存储起来,当你完成循环时只需打印变量

int lastindex;
for(int i=0;i<x.length;i++){
         if(x[i]==0){
             lastindex=i;
}
System.out.println(lastindex); 

答案 4 :(得分:0)

public static int lastZero(int[] x){
        int temp=0;
        for(int i=0;i<x.length;i++){
         if(x[i]==0){
             temp=i;
         }
        }
        System.out.println(temp);
        return 0;
    }

这将提供所需的输出。

答案 5 :(得分:0)

从数组的END开始并递减。如果我们永远不会找到零,则返回-1,它始终在索引之外。这由你解释

public class Stack {
public static void main(String[] args){
    int[] a=new int[5];
    a[0]=1;
    a[1]=0;
    a[2]=90;
    a[3]=0;
    a[4]=4;
    findLast(a);
}
public static int findLast(int[] x){
    for(int i=x.length-1;i>=0;i--){
     if(x[i]==0){
         return i;             
     }
    }
    return -1;
}

}