【发布时间】:2021-02-13 07:43:57
【问题描述】:
我的 Arrays.sort 被忽略。正在打印数组而不进行排序。我尝试添加不同的参数并将其放置在不同的地方,但没有任何运气。我的程序假设在从文件中读取整数之后对数组进行排序。
package filterSort;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
import java.util.*;
public class FilterSort {
public static int[] doubleArrayAndCopy(int[] arr) {
int len = arr.length;
int max = arr.length * 2;
int[] copyArr = Arrays.copyOf(arr,max);
int length = copyArr.length-1;
Arrays.sort(copyArr, 0, length);
return copyArr;
}
public static void main(String[] args) {
int[] data = new int[8];
try {
File file = new File("data.txt");
Scanner myReader = new Scanner(file);
for(int i = 0; myReader.hasNext(); i++) {
if(i == data.length - 1) {
data = doubleArrayAndCopy(data);
}else {
if(myReader.hasNextInt()) {
data[i] = myReader.nextInt();
System.out.println(data[i]);
}else {
myReader.next();
}
}
}
} catch (FileNotFoundException e) {
System.out.println("File not found");
}
}
}
这是我的输出:
4
44
99
1
2
9
3
4
90
162
92
0
1
22
4
2
3
99
-8
100
99
-3
98
我需要以这种格式对其进行排序。
如果我把 System.out.println 和 Arrays.sort 放在最后:
} catch (FileNotFoundException e) {
System.out.println("File not found");
}
Arrays.sort(data, 0, data.length - 1);
for(int j = 0; j < data.length; j++) {
System.out.println(data[j]);
}
它对它进行排序,但它会从空索引中输出所有额外的 0。
【问题讨论】:
-
您在读取数据时打印出数据,而不是排序后的数组。使用
Arrays.toString(data)从数组中获取字符串表示形式(或使用for循环将其打印出来),然后在完成读取和排序后执行此操作。你的System.out.println放错地方了。你也可以在阅读后离开排序,不需要每次加倍大小时排序,是吗?