2012-05-07 124 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真的,生命周期很重要,编辑... –