gpt4 book ai didi

java - 在 Java 文本文件中使用字符串对数字进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 02:19:18 25 4
gpt4 key购买 nike

目标是有一个排序的 input.txt,例如:

1 one
2 two
4 four
10 ten

来自以下的 input.txt:

2 two
4 four
1 one
10 ten

到目前为止,在我的代码中,我已经对数字数组进行了排序,现在我必须更改字符串数组,因为它与数字数组配对。我该怎么做?

import java.util.*;
import java.io.*;
//Noah Cavazos

public class SortingNumbers{
public static void main(String[] args) throws FileNotFoundException {
Scanner fin = new Scanner(new File("input.txt"));
int[] nums = new int[100];
String[] texts = new String[100];
int cnt = 0;
while(fin.hasNextInt()){
nums[cnt] = fin.nextInt();
texts[cnt] = fin.nextLine();
cnt++;
}
int[] Numbers = new int[cnt];
String[] Words = new String[cnt];
for(int i = 0; i < Numbers.length; i++){
Numbers[i] = nums[i];
Words[i] = texts[i];
//System.out.println(Numbers[i] + Words[i]);
}
Arrays.sort(Numbers);
//Arrays.sort(Words); < Alphabetically

}

}

最佳答案

因为您将字符串和数字保存在不同的数组中,所以一旦您对其中一个数组进行排序,您就会失去字符串-数字对之间的关​​系。

如@Andrew S 所述,实现此目的的方法是创建一个新类 (Pair),您可以在其中保存数字和字符串。您将从文件中读入类型为 Pair 的对象数组,而不是分别读取数字和字符串。数组排序时,数字和对应的文本会一起排序。

为了能够对包含 Pair 类型元素的数组进行排序,我们需要指定如何准确比较两个对。这就是 Comparator 发挥作用的地方。它将告诉排序函数比较数组中对象的标准。在这种情况下,两个 Pair 对象通过它们的 number 字段进行比较。

public class Pair {

private int number;
private String text;
// getters and setters, constructor, toString() etc.
}


public static void main(String[] args) throws FileNotFoundException{
Scanner fin = new Scanner(new File("input.txt"));
int[] nums = new int[100];
String[] texts = new String[100];
int cnt = 0;
while(fin.hasNextInt()){
nums[cnt] = fin.nextInt();
texts[cnt] = fin.nextLine();
cnt++;
}
Pair[] pairs = new Pair[cnt];
for(int i = 0; i < cnt; i++){
pairs[i] = new Pair(nums[i], texts[i]);
}
Arrays.sort(pairs, new Comparator<Pair>() {
@Override
public int compare(Pair o1, Pair o2) {
return Integer.compare(o1.getNumber(), o2.getNumber());
}
});
for (Pair p: pairs) {
System.out.println(p);
}

}

关于java - 在 Java 文本文件中使用字符串对数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53575517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com