簡體   English   中英

從java中的int []方法返回單個int

[英]Returning a single int from int[] method in java

我正在嘗試創建一個方法“差異”,該方法在 int 數組中查找最大數並將 int 返回給 main 方法。 我收到一條錯誤消息,告訴我我無法將 int 數組轉換為 int。 我怎樣才能使這項工作? 我不想返回整個數組。 非常感謝

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;

    }   
}

看這行代碼

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

input[largest] ,第一次最大值是 7 表示 input[7],你的數組大小只有 4.so 這不起作用。

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

我將嘗試解釋一些事情:
首先,你對數組的聲明很奇怪,你應該聲明: int[] arr = {7, 6, 8, 9};
其次, difference函數返回一個整數,你用它做什么? 沒什么.. 嘗試打印它.. 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)就足夠了。

祝你好運 :)

您已經聲明了一個數組,即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];
        }
    } 

當您在else if(input[i] <= input[largest]) 中進行比較時,它將產生錯誤,因為在第一次迭代中最大 = 7並且在下一次迭代中它將進入 else if where input[1]<= input[7]被檢查,因此將生成數組越界異常。

我認為您想獲得數組中的最大元素,因此您可以縮短數組並輕松訪問最大元素,而不是這樣做。

問題:
1. largest用作索引(即input[largest] ),如果largest大於數組長度可能會導致ArrayOutOfBoundsException 2. largest用於if設置smallest
3. difference返回largest元素而不是largestsmallest元素之間的差異
4. 不使用difference返回值(不是真正的問題,但您看不到difference的輸出)

否則,以下(修改后的)程序有效:

public class bigDiff{
    public static void main(String[] args){
        int[] arr = new int[] {7, 6, 8, 9};
        System.out.println(difference(arr)); // problem 4 was here
    }

    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){ // problems 1 and 2 were here
                smallest = input[i];
            }
        } 
        return largest - smallest; // problem 3 was here

    }   
}

這應該可以正常工作:

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;

}  

當您只對最大值感興趣時,保留最小值也沒有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM