按Shell排序对字符串排序

时间:2014-03-05 22:30:12

标签: java algorithm shell sorting

我有50个不同长度和内容的字符串行的文本文件。我需要读取文件并按升序排序。 排序条件:句子中以字母“a”开头的单词数

  public static void main(String[] args) throws FileNotFoundException {
    String token1 = "";
    Scanner inFile1 = new Scanner(new File("E:\\text.txt"));

    List<String> temps = new LinkedList<String>();
    inFile1.useDelimiter(". ");

    while (inFile1.hasNext()) {
        token1 = inFile1.nextLine();
        temps.add(token1);
    }
    inFile1.close();

    String[] tempsArray = temps.toArray(new String[0]);
    for (int i = 0; i < tempsArray.length; i++) {
        System.out.println(tempsArray[i]);
    }

    int cnt = 0; //counts of words in the string line
    for (int i=0; i<tempsArray.length; i++) {
        int k=0; //counts of words that start from the letter "а"
        System.out.println("Line № = " + i);
        StringTokenizer st = new StringTokenizer(tempsArray[i]);           
        while (st.hasMoreTokens()) {
            cnt++;
            String s= st.nextToken();
            if (s.charAt(0)=='a') {                    
                k++;               
            }             
        }
       System.out.println("Words count = " + cnt);
       cnt=0;
       System.out.println("Words 'а' = " + k);  
    }       
}

新问题:如何通过 k 来排序字符串行?该代码后我还应该做些什么?

1 个答案:

答案 0 :(得分:1)

您可以使用this code进行shell排序,它可以同时使用数字和字符串。首先,您需要将所有字符串存储在数组中。

在我给出的引用中,您应该使用类似下面的代码更改main方法,以从文件中读取输入并存储在数组中。

 String token1 = "";

// create Scanner inFile1
Scanner inFile1 = new Scanner(new File("YourFilenNme"));

List<String> temps = new LinkedList<String>();


while (inFile1.hasNext()) {
  // find next line
  token1 = inFile1.next();
  temps.add(token1);
}
inFile1.close();

String[] tempsArray = temps.toArray(new String[0]);

Shell.sort(tempsArray);
    show(tempsArray);

编辑:

StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
     String s= st.nextToken();
     if (s.charAt(0)=='a')
     {
         "do what you want here"
     }

 }