Returning a single int from int[] method in java

时间:2017-10-12 10:11:14

标签: java arrays int

I am trying to make a method 'difference' that finds the largest number in an int array and returns the int to the main method. I am getting an error telling me I can't convert an int array to an int. How can I make this work? I don't want to return an entire array. Thanks a lot

public class bigDiff{
    public static void main(String[] args){
        int[] arr = new int[] {7, 6, 8, 9};
        difference(arr);
    }

    public static int difference (int[] input){
        int smallest = input[0];
        int largest = input[0];

        for (int i = 0; i < input.length; i++){
            if(input[i] >= largest){
                largest = input[i];
            } else if(input[i] <= input[largest]){
                smallest = input[i];
            }
        } 
        return largest;

    }   
}

5 个答案:

答案 0 :(得分:0)

观看这行代码

else if(input[i] <= input[largest]){
            smallest = input[i];
        }

input[largest],第一次最大值为7表示输入[7],而您的数组大小仅为4.这不起作用。

input[largest]改为使用input[i]

答案 1 :(得分:0)

我会尝试解释一些事情:
首先,你对数组的声明很奇怪,你应该声明:int[] arr = {7, 6, 8, 9};
其次,difference函数返回一个int,你用它做什么?什么都没有..尝试打印.. System.out.println(difference(arr));
第三,你想要获得最大的数字,为什么你需要最小的数字?甚至编译器也会警告您没有使用的变量。 因此,您的difference功能应该如下:

int largest = input[0];
for (int i = 0; i < input.length; i++){
    if(input[i] > largest)
        largest = input[i];
} 
return largest;

** input[i] == largest您无需执行任何操作,因此检查if(input[i] > largest)就足够了。

祝你好运:)

答案 2 :(得分:0)

你已声明一个数组,即此数组的int[] arr = new int[] {7, 6, 8, 9}长度为4,但这里是差函数,

for (int i = 0; i < input.length; i++){
        if(input[i] >= largest){
            largest = input[i];
        } else if(input[i] <= input[largest]){
            smallest = input[i];
        }
    } 

当您在其他if(输入[i]&lt; =输入[最大])进行比较时,它会产生错误,因为在第一次迭代中最大= 7 并且在下一次迭代中,如果选中 input [1]&lt; = input [7] ,它将进入else,这样就会生成数组超出范围的异常。

我认为您希望获得数组中最大的元素,因此您可以简化数组并轻松访问最大元素。

答案 3 :(得分:0)

问题:
1. try { // new xdoc instance XmlDocument xDoc = new XmlDocument(); //load up the xml from the location xDoc.Load(sitemap); // start traversing from the children of the root node var rootNode = xDoc.FirstChild; traverse(rootNode.ChildNodes, rootNode.Name); } catch { Console.WriteLine("Error :-("); } 用作索引(即largest),如果input[largest]大于数组长度,则可能导致ArrayOutOfBoundsException 2. largestlargest来设置if
3. smallest返回difference元素,而不是largestlargest元素之间的差异
4.未使用smallest的返回值(不是真正的问题,但是您看不到difference的输出)

否则下面的(修改)程序有效:

difference

答案 4 :(得分:-1)

This should work just fine:

public static int difference (int[] input){
    int smallest = input[0];
    int largest = input[0];

    for (int i = 0; i < input.length; i++){
        if(input[i] > largest){
            largest = input[i];
        } else if(input[i] < smallest){
            smallest = input[i];
        }
    } 
    return largest;

}  

Also there is no point in keeping the smallest value when you're interested only in the largest.