2012-03-21 51 views
0

我正在用Java編寫一個方法(第一次這樣做),編譯時遇到了一個小錯誤,我仍然不明白我要出錯的地方,儘管調試了數百次。最後,我的「M轉向互聯網尋求幫助Missing Return Statement - int []

這裏是我的代碼有問題的部分:

public int[] sortArray(String [] args) { 
     String temp = ""; 
     for(int x = 0; x < args.length; x++){ 
      for(int y = 1; y < args.length - 1; y++){ 
      if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
       temp = args[y-1]; 
       args[y-1] = args[y]; 
       args[y] = temp; 
      } 
     } 
    } 
} 

我每次編譯它提供了錯誤:缺少return語句 當我把一個」迴歸0;「到最後一個'}'之前的代碼中,它給出了錯誤的返回類型的錯誤,即0是一個int,我需要一個int []返回。

+0

如果它不能編譯,如何調試數百次? – 2012-03-21 09:26:09

+1

我認爲這是'[家庭作業]',否則你會使用'Arrays.sort()' – 2012-03-21 09:26:43

回答

4

你應該返回一個整數數組方法簽名的整數或更改返回類型爲void

public void sortArray(String [] args) { 
    // ... 
} 
0

將您的排序方法的簽名更改爲void。否則,它期望你在方法的末尾返回你的已排序的int數組。

如果你想回到你的排序字符串數組,改變你的方法如下:

public String[] sortArray(String [] args) { 
    String temp = ""; 
    for(int x = 0; x < args.length; x++){ 
     for(int y = 1; y < args.length - 1; y++){ 
     if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
      temp = args[y-1]; 
      args[y-1] = args[y]; 
      args[y] = temp; 
     } 
    } 
    } 
    return args; 
} 
2

是什麼意思返回的方法?你的方法排序 - 爲什麼它需要返回任何東西?你可以只讓一個void方法:

public void sortArray(String[] args) { 
    for (int x = 0; x < args.length; x++) { 
     for (int y = 1; y < args.length - 1; y++) { 
     if (Integer.parseInt(args[y-1]) > Integer.parseInt(args[y])) { 
      // Note change of declaration location: in general, declare 
      // variables with minimal scope 
      String temp = args[y - 1]; 
      args[y - 1] = args[y]; 
      args[y] = temp; 
     } 
    } 
} 

(請注意,你在這裏做了很多不必要的解析,同時你永遠在你的內循環使用的x值......是故意的? )

0

函數中沒有return語句!因此,編譯錯誤......看來你是直接從事args[],所以不返回任何(void函數)

0

你可能只是想返回args或改變你的方法void

1
public String[] sortArray(String [] args) { 
      String temp = ""; 
      for(int x = 0; x < args.length; x++){ 
       for(int y = 1; y < args.length - 1; y++){ 
       if(Integer.parseInt(args[y-1])>Integer.parseInt(args[y])){ 
        temp = args[y-1]; 
        args[y-1] = args[y]; 
        args[y] = temp; 
       } 
      } 
     } 
      return args; 
    } 

或者使用void類型

0

在java中,參數像C/C++中的(char * args)一樣引用。所以你不需要返回任何東西,只需在調用者中使用args數組就可以了:)

0

如果你不想返回任何值,那麼將返回類型改爲void。如果你想返回任何東西,那麼使用適當的數據類型,在你的情況下,你應該返回int數組變量。