对于编程任务,我们必须创建执行不同任务的数组方法。 对于这个,我必须返回数组中的第二大元素。
以下是我的方法正文。值[i] = values.nextInt();出现错误;行说“不能在数组类型int []上调用nextInt()”它的其余部分应该工作正常(据我所知..我没有其他错误,但我还没有测试过)关于如何我可以修复nextInt错误?
谢谢!
public int returnSecondLargest(){
int secondLargest = Integer.MIN_VALUE;
int largest = Integer.MIN_VALUE;
for (int i = 0; i < values.length; i++) {
values[i] = values.nextInt();
if (largest < values[i]) {
secondLargest = largest;
largest = values[i];
}
if (secondLargest < values[i] && largest != values[i])
secondLargest = values[i];
}
return secondLargest;
}
答案 0 :(得分:1)
您可以使用Arrays类并对数组进行排序。在这种情况下,它将是一个升序,所以你想要数组中倒数第二的东西,这就是为什么我在数组上调用索引 - array.length-2。如果我调用了array.length-1,你将得到最后一个索引,这是数组中最大的数字。使用此方法,您只需将数组传入参数即可。
public int secondLargest(int[] array){
Arrays.sort(array);
return array[array.length-2];
}
答案 1 :(得分:0)
简单地说,values是一个数组(不是Array类)。它没有像nextInt这样的方法。
数组是一个容器对象,它包含固定数量的值 单一类型。数组的长度是在数组的时候建立的 创建
我喜欢将它视为基本类型(它不是),因为数组和基元类型都没有操作它们的方法,但是包含可以包含方法的类/对象。
返回第二大的方法可以通过删除该行来实现,我不知道你为什么要这样做。
答案 2 :(得分:0)
public int returnSecondLargest(){
int secondLargest = Integer.MIN_VALUE;
int largest = Integer.MIN_VALUE;
for (int i = 0; i < values.length; i++) {
if(values[i] > values[i+1]){
int temp = values[i];
values[i] =values[i + 1];
values[i+1] = temp;
}
}
return values[values.length - 2];
}