簡體   English   中英

從java中的方法返回值時出錯

[英]error with returning a value from a method in java

你好在下面的代碼中我正在排序(排序方法)一個小數組以找到最大的數字。 然后我在(顯示方法)中打印答案。

但是為了擴展我的知識,我想在 return 語句中將最大值返回給它們 main,然后從那里打印......只是為了學習如何返回一個值。

package christmas;

public class maxvalue 
{ 
    public static void main(String[] args) 
    { 
        int[] data={10,90,30}; 
        sort(data); 
        System.out.println("\nmax number is :"); 
        display(data); 
        System.out.println(data);
    } 
    static int display(int num[]) 
    { 
        System.out.print(num[0] + " "); 
        return num[0];
    }
    static void sort(int num[]) 
    { 
        int i, j, temp; 
        for(i=0; i<num.length-i;i++) 
        {  
            for(j=0; j<num.length-i-1;j++) 
            { 
                if(num[j]<num[j+1]) 
                { 
                    temp = num[j]; 
                    num[j] = num[j+1]; 
                    num[j+1] = temp; 
                }
            }
        }
    }
}

輸出是:

最大數量為:90 [I@4617c264

90 是顯示值打印的最大值。 但是在此之后,我返回了最大值,然后嘗試打印返回值。 但它看起來不是一個整數,而是一個內存位置正在打印。

請有任何想法 - 我是學生,但這不是家庭作業 - 只是想趕上。 我很欣賞有更優雅的方法來計算數組中的最大值,但我想學習的是在方法之間傳遞參數。

原因是您試圖在最后一個 System.out 中打印數據,它是一個數組,這就是您看到內存地址的原因。嘗試打印 display(data),您將看到輸出所需的數字。

您打印的是data數組內存位置,而不是打印返回值:

System.out.println(data);

您應該更改該行:

System.out.println(display(data));

有了這條線,我們有:

  1. 您的display方法被調用並打印最大值
  2. 您的display方法返回最大值
  3. println獲取返回值並打印它

嘗試 System.out.println(data[0]); data 是您的數組,因此打印沒有索引的數據只會打印其內存位置

private static int sort(int[] array){
  int a, b, max = 0;
  for (int i = 1;//If i was 0, it would have thrown an ArrayIndexOutOfBoundsException.
      i < array.length; i++){
    a = array[i-1];//The first element in the array.
    b = array[i];//The second one, and so on.
    if (a > b) max = a;//Check the bigger number.
    else max = b;
  }
  return max;
}
private static void display(int nr){
  System.out.print(nr);//Or what you want to do with the number.
}
public static void main(String[] args){
  int[] data={10,90,30};
  display(sort(data));
  //Or do it like this.
  int max = sort(data);
  display(max);
}

暫無
暫無

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

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