编写一个接收
ArrayList
整数作为参数的方法,并返回集合中最大整数的索引。
到目前为止,我只需要接收ArrayList
整数所需的代码,搜索特定的整数并返回true
。
有人能告诉我需要int
密钥吗?没有它,代码不会工作吗?
public static boolean search (ArrayList<Integer>list, int key) {
for (int=0 ; i< listsize(); i++)
if (list.get(i) == key) {
return true;
} return false;
}
答案 0 :(得分:0)
这应该可以解决问题:
public int getIndexOfMaxValue(final List<Integer> list)
{
int maxFound = Integer.MIN_VALUE, value;
int ret = 0;
for (int index = 0; index < list.size(); index++) {
value = list.get(index);
if (value > maxFound) {
maxFound = value;
ret = index;
}
}
return ret;
}
请注意,列表可以具有重复元素,并且此代码将返回找到的第一个最大值的索引。如果您想要最后一个索引,只需在上面的代码中将>
替换为>=
。
答案 1 :(得分:0)
变量key
是必需的,因为图示的方法似乎不是查找max的方法,而是返回列表是否包含某个数字的方法。
图示的方法确实存在逻辑错误,因为如果第0个索引不是key
,则循环体会立即返回:
if (list.get(i) == key) {
return true;
}
return false; // <- this should be after the loop
关于分配的方法(我假设它是一个赋值):
编写一个接收整数ArrayList作为参数的方法,并返回集合中最大整数的索引。
不,此方法不需要密钥变量。
要编写这样的方法,首先要做的是确保列表不为空。空列表不能有最大索引。
if(list.isEmpty()) {
return -1; // return a special value indicating the list is empty
}
如果列表为null,那么该检查也将抛出NullPointerException。我们可以检查列表是否为null并返回其他内容,但这是一个可能提供异常信息的情况。
然后你需要保留一个“当前”最高指数的变量。我们可以将其初始化为0,因为我们已经知道列表的大小至少为1。
int indexOfMax = 0;
然后我们将有一个循环,将列表中的每个索引与当前最高索引进行比较,如果该索引处的数字更高,则重新分配它。我们可以从1开始这个循环,因为我们已经知道列表的大小必须至少为1.如果没有其他索引,循环将立即中断。如果列表只有一个数字,那么该数字是最大的数字。
for(int i = 1; i < list.size(); i++) {
然后进行比较和分配:
if(list.get(i) > list.get(indexOfMax)) {
indexOfMax = i;
}
}
最后返回我们的索引。
return indexOfMax;
答案 2 :(得分:0)
public static int search(List list){
int highestIntIdx= 0;
for (int i = 1;i<list.size();i++){
if(list.isEmpty())
break;
if (list.get(i) >= list.get(i-1)){
highestIntIdx = i;
}
}
return highestIntIdx;
}
}
答案 3 :(得分:-1)
您似乎被要求返回ArrayList中最大整数的索引。
所以你想要实现一个方法liek
package com.snippet;
import java.util.ArrayList;
public class Largest {
public Largest() {
}
public int getIndexOfLargest(ArrayList<Integer> list) {
int index;
if (list == null) {
index = -1;
} else {
index = 0;
for (int i = 1; i < list.size(); i++) {
if (list.get(i) > list.get(index)) {
index = i;
}
}
}
return index;
}
}