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=0;i<x.length;i++){
         if(x[i]==0){
             System.out.println(i);             
         }
        }
        return 0;
    }
}

出力は次のとおりです。

1
3

私が本当に欲しいのはインデックス3です。

4

6 に答える 6

6
  • 配列の最後から開始します(つまりi=x.length-1
  • iインクリメントするのではなくデクリメントする(つまり、使用するi--
  • ゼロに達したらすぐに停止します(つまり、break後に追加しますprintln)。
  • ループがインデックスゼロの要素を処理するように停止条件を作成します。
于 2013-02-02T00:28:27.883 に答える
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;
}
于 2013-02-02T00:29:26.907 に答える
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;
        }
    }
}

}

于 2013-02-02T00:34:16.767 に答える
0

制約が最初から配列をトラバースすることである場合は、変数を確認0したときにインデックスを保存し、ループが完了したら変数を出力するだけです。

int lastindex;
for(int i=0;i<x.length;i++){
         if(x[i]==0){
             lastindex=i;
}
System.out.println(lastindex); 
于 2013-02-02T00:29:41.313 に答える
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;
    }

これにより、目的の出力が得られます。

于 2013-02-02T01:59:14.433 に答える
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;
}

}

于 2013-02-02T02:21:42.733 に答える