有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java尝试按长度对名称进行排序

我试图从一个文件中读取5个名称的列表,确定每个名称的长度,并使用数组对长度进行排序。但是,我似乎不知道如何将名称的长度传递给数组。。。非常感谢您的帮助

import java.io.*;
import java.util.Arrays;
public class NewClass {

public static void main(String[] args) throws IOException,
    FileNotFoundException {

String file = "names.txt";
processFile("names.txt");

}


public static void processFile (String file) throws IOException, FileNotFoundException{
BufferedReader inputReader =
       new BufferedReader (new InputStreamReader
(new FileInputStream("names.txt")));
String line;
while  (( line = inputReader.readLine()) != null){

   int nameL =line.length();

} 
/*public static void main (String [] args) {
*/
    int [] aryNum;
    aryNum= new int [5];

    aryNum[0] = int nameL;
    aryNum[1]=int nameL;
    aryNum[2]=int nameL;
    aryNum[3]=int nameL;
    aryNum[4]=nameL;

   Arrays.sort(aryNum);

   int i;

   for (i=0; i<aryNum.length; i++) {
       System.out.println("" + aryNum[i]);

   }

}


}

共 (1) 个答案

  1. # 1 楼答案

    如果要对数组中字符串的长度进行排序,那么实际上需要对数字进行排序:

    static int[] getSortedLengths(String[] names) {
        int len = names.length;
        int [] lengths = new int[len];
        for (int i = 0; i < len; i++) {
            // watch for nulls
            lengths[i] = names[i].length();
        }
        Arrays.sort(lengths);
        return lengths;
    }
    

    如果要对名称(即字符串)进行排序,可以使用基于比较器排序的通用概念。比较器实现了一个行为,该行为按照特定标准对集合(或数组)的元素进行排序。有趣的是,您只需要将集合(或数组)所用类型的两个元素的比较提取出来。然后将比较器传递给排序方法,瞧!您将得到一个已排序的集合(或数组)。首先,让我们使用以下版本:

    static void sortStringsByLength(String[] names) {
        Comparator<String> stringLengthComparator = new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return Integer.compare(o1.length(), o2.length());
            }
        };
        Arrays.sort(names, stringLengthComparator);
    }
    

    只需使用compare方法,就可以做很多事情,比如按照长度对所有字符串进行反向排序(首先是最长的字符串),或者根据每个字符串的某种分数对它们进行排序等等。这被称为抽象,是计算机编程中最重要的一项技能