我编写了以下代码来查找数组中的最后一个零索引:
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。
答案 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;
}
}