2013-10-17 57 views
-4

我输入来自用户的字符串,然后列表进行排序,在第一个步骤,然后除去在第二个重复step.But的代码是给error.Please帮助! !为什么我的代码不转换的SortedSet到数组

下面是代码

import java.util.*; 

class stringSort 
{ 
    public static void main(String args[]) 
    { 
     String s1; 
     char[]s2; 
     System.out.println("Enter the string"); 
     Scanner s=new Scanner(System.in); 
     s1=s.next(); 
     //call the sort method to sort the string 
     s2=sort(s1); 
     System.out.println(String.valueOf(s2)); 
     //remove duplicate entries in the sorted string 
     SortedSet<Character> set=new TreeSet<Character>(); 
     set.addAll(Arrays.asList(s2)); 
     System.out.println(String.valueOf(set.toArray())); 
    } 
    static char[] sort(String s) 
    { 
     char []temp=s.toCharArray(); 
     Arrays.sort(temp); 
     return temp; 
    } 
} 

它给人的错误

no suitable method found for addAll(List<char[]>) set.addAll(Arrays.asList(s2));

+0

随着1000+的声誉,你应该能够告诉什么是错误..张贴请。 – Maroun

+1

你忘了告诉我们你得到了什么错误? – jpw

+0

为什么不使用'set.toArray()'来代替?此外,'的SortedSet '。 –

回答

4

但代码给错误

SortedSet<char> set=new TreeSet<char>(); 

这是非法的,不会编译。如果你想使用字符集,你必须使用Character类。

SortedSet<Character> set=new TreeSet<Character>(); 

UPDATE

它给出了错误发现的addAll(列表)set.addAll(Arrays.asList(S2))没有合适的方法;

那是因为你需要一个Character阵列,而不是一个char阵列,所以你有两个选择:

  1. 变化char[]s2;Character[]s2;

  2. char阵列转换为Character阵列调用sort方法:

    Character[] a = new Character[s2.length]; 
    System.arraycopy(s2, 0, a, 0, s2.length); 
    a = sort(s1); 
    

在这两种情况下,你必须改变你的sort方法是:

static Character[] sort(String s) { 
    Character[] temp = new Character[s.length()]; 
    for (int i = 0; i < temp.length; i++) { 
     temp[i] = s.charAt(i); 
    } 
    Arrays.sort(temp); 
    return temp; 
} 
+0

+1。我没有注意到:)更多信息:不能实例化与基本类型泛型类型(http://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#instantiate)。 – Maroun

+0

@BackSlash:它给出的错误'找不到适合addAll的方法(列表) \t \t set.addAll(Arrays.asList(s2)); \t \t^ ' –

+0

@InsaneCoder见我的更新 – BackSlash

相关问题