我必须编写一个名为LastIndexOf的方法,该方法接受一个整数值作为参数,并返回最后一次出现的值列表中的索引,如果未找到该值,则返回-1。这是我的代码,但它没有返回任何内容。对我来说它看起来总是会返回-1但我在输出上看不到它,因为它不会打印方法返回的内容。
这些是列出商店的值。
列表 - > [2,5,7,24,5,9,13,2]
public class LastIndexOf {
public static void main(String[] args) {
System.out.println("index of 5 = " + list.lastIndexOf(5)); // should to return index of 5= 4
System.out.println("index of 100 = " + list.lastIndexOf(100)); // should return index of 100 = -1
}
public static int lastIndexOf (int element) {
int index = 0;
ListNode current = list;
while (current != null) {
if (current.data == element) {
return index;
}
index ++;
current = current.next;
}
return -1;
}
}
这是我得到的输出:
index of 5 =
index of 100 =
答案 0 :(得分:0)
此代码不应包含2个return语句。此外,您正在使节点等于整个列表;当它应该等于列表的头部。
这段代码是给你纠正的吗?我问,因为它似乎没有逐步发展;相反,它看起来是从上到下写的。
答案 1 :(得分:0)
此代码段返回正确的值。
public class Test
{
public static java.util.List<Integer> list = Arrays.asList(2, 5, 7, 24, 5, 9, 13, 2);
public static void main(String[] args)
{
System.out.println("index of 5 = " + list.lastIndexOf(5));
System.out.println("index of 100 = " + list.lastIndexOf(100));
System.out.println(lastIndexOf(5));
System.out.println(lastIndexOf(100));
}
public static int lastIndexOf (int element) {
int index = 0;
int found = -1;
List<Integer> current = list;
while (index < current.size()) {
if (current.get(index) == element) {
found = index;
}
index ++;
}
return found;
}
}
我不知道ListNode的用途,因为实际上并不需要它。
我想鼓励您了解ArrayList&lt;&gt; openjdk中的实现如下:ArrayList.java#ArrayList.lastIndexOf in OpenJDK
答案 2 :(得分:0)
我猜这个:
public int lastIndexOf (int value) {
int index = -1;
int size = size();
int count = 0;
ListNode current = front;
for (int i = 0; i < size; i++) {
int indexValue = current.data;
if (value == current.data) {index = count;}
count++;
current = current.next;
}
return index;
}