我必须编写一个名为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 =
此代码段返回正确的值。
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<>openjdk中的实现看起来像:ArrayList.java openjdk 中的ArrayList.lastIndexOf
此代码不应该有2个返回语句。此外,您正在使一个节点等于整个列表;当它应该等于列表的头时。
这个代码是给你纠正的吗?我之所以这么问,是因为它似乎并不是按块开发的;相反,它看起来是自上而下写的。
我想使用这个:
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;
}