我是Java的新手。我想使用循环获取数组中最后一次出现的索引。但是,我不明白为什么我不能。
这是数组: {2,3,4,5,4,5,3}
我想得到最后4个的索引。
我的代码是:
public static void main(String args[]){
int[] nums = {2, 3, 4, 5, 4, 5, 3};
int pos4 = 0;
for (int k = nums.length -1; k >= 0; k--){
if (nums[k] == 4){
pos4 = k;
break;
}
System.out.print(pos4);
}
}
结果是:00 ??
当我改为:
public static void main(String args[]){
int[] nums = {2, 3, 4, 5, 4, 5, 3};
int pos4 = 0;
for (int k = nums.length -1; k >= 0; k--){
if (nums[k] == 4){
break;
}
System.out.print(k);
}
}
我得到了65 ???
然而,当我直接从循环打印时,我得到了正确的索引:
public static void main(String args[]){
int[] nums = {2, 3, 4, 5, 4, 5, 3};
int pos4 = 0;
for (int k = nums.length -1; k >= 0; k--){
if (nums[k] == 4){
System.out.print(k);
break;
}
}
}
谁能告诉我为什么?非常感谢!
答案 0 :(得分:3)
如何使用现有方法,而不是重新发明轮子?这个单线解决了这个问题:
Integer[] array = { 2, 3, 4, 5, 4, 5, 3 };
int idx = Arrays.asList(array).lastIndexOf(4);
答案 1 :(得分:3)
您的第一个示例是从循环内打印。一旦条件满足,您退出循环并且从不打印出最终值。
public static void main(String args[]){
int[] nums = {2, 3, 4, 5, 4, 5, 3};
int pos4 = 0;
for (int k = nums.length -1; k >= 0; k--) {
if (nums[k] == 4){
pos4 = k;
break;
}
}
System.out.print(pos4); // moved outside of loop to print final value
}
答案 2 :(得分:0)
你的print语句在循环中。所以它打印0次两次,然后当结果被发现时;跳过它。试试这个......
int pos4 = 0;
for (int k = nums.length - 1; k >= 0; k--) {
if (nums[k] == 4) {
pos4 = k;
break;
}
}
System.out.print(pos4); // <== after loop