2012-05-07 125 views
-1

我是一個非常努力的Java程序員。我試圖使用compareTo函數對字符串數組進行排序。但在我的代碼中,'='運算符在代碼中導致問題。有人可以幫我嗎?由於=運算符拋出異常

public class StringSort 
{ 
    static String arr[]= ("Now","My","There","When"); 
     public static void main(String[] args) 
    { 

     for(int i=0;i<arr.length;i++) 
     { 
      for(int j=0;j<arr.length;j++) 
      { 
       if(arr[i].compareTo(arr[j])<0) 
       { 
        String t=arr[j]; 
        arr[j]=arr[i]; 
        arr[i]=t; 
       } 
      } 
     } 
    } 

} 
+1

當然,我們可以猜測究竟是什麼問題,它發生在哪裏......在這種情況下,它碰巧很容易。一般來說,如果你明確描述發生了什麼樣的異常/錯誤,那麼每個人的生活都會更容易。如果是運行時錯誤,則還應該描述輸入和輸出數據(如果適用)。 –

+0

下一次當問一個問題時,請指出發生錯誤的行號以便我們更容易回答。在這個問題中有6個'='操作符。 –

回答

11

使用大括號,而不是周圍的數組初始化paratheses。

static String arr[]= {"Now","My","There","When"}; 
1

當直接聲明一個數組,並且裏面的項目使用大括號。

static String arr[]= {"Now","My","There","When"}; 
4

static String arr[]= new String[]{"Now","My","There","When"};

1

這是更好地使私人和最終如果你能。也可以使用Java數組符號來代替f C符號。

private final static String[] arr = {"Now","My","There","When"}; 

其也最好限制的字段到它是生命的範圍(即創建,使用和丟棄)。即它只在一種方法中使用,所以你可以在那裏定義它。

public static void main(String[] args) { 
    String[] arr = "Now,My,There,When".split(","); 
    Arrays.sort(arr); 
    System.out.println(Arrays.toString(arr)); 
} 
+0

您還需要考慮如何使用該方法。如考慮通話的頻率和創建字段值的成本。在這種情況下,因爲它是'main'只有一次,但是在真實的類和方法中,即使範圍僅僅是方法,靜態初始化類中的字段(而不是方法)通常仍然是有用的。 –

+0

@KevinBrock真的,生命週期很重要,編輯... –