我试图将100个随机整数写入一个文本文件,从最小到最大对它们进行排序,然后将排序后的那些数字写入单独的文本文件。我了解如何将数字写入一个文件,以及如何对它们进行排序。如果两个文件都不存在,则必须由程序创建它们。例如,如果我写原始100个随机整数所在的“ Numbers.txt”不存在,则程序将为我创建文件,就像我尝试在上面写有排序数字的文本文件一样。我正在努力了解如何将排序后的数字从一个文件写入另一个文件。
我试图从最初存储数字的整数数组中提取相同的数字,并使用Arrays.sort命令对其进行排序,然后将该信息写入到我希望称为“已排序”的单独文件中。文本文件”。我在那里遇到一个不兼容的类型错误,指出无法将void转换为int,但不知道如何在逻辑上解决此错误。
import java.util.*;
import java.io.*;
public class Numbers {
public static void main(String[] args) throws Exception {
//check if source file exists
File number = new File("Numbers.txt");
File sorted = new File("Sorted.txt");
if (!number.exists()) {
try ( // create the file
PrintWriter output = new PrintWriter(number);
) {
for (int i = 0; i <= 100; i++) {
output.print(((int)(Math.random() * 999) + 1) + " ");
}
}
}
try (
Scanner input = new Scanner(number);
) {
int[] numbers = new int[100];
for (int i = 0; i < 100; i++)
System.out.print(numbers[i] + " ");
System.out.println();
if (!sorted.exists()) {
try (
PrintWriter output = new PrintWriter(sorted)
) {
for (int i = 0; i < 100; i ++) {
output.print((int)Arrays.sort(numbers));
}
}
}
}
}
}
预期结果是第一个文本文件显示的数字与随机创建时的数字相同,而第二个文本文件显示的数字则在对其进行排序后显示。到目前为止,我可以获取第一个文件以随机顺序显示数字,但是甚至无法创建第二个文本文件,更不用说对数字进行排序和书写了。
答案 0 :(得分:0)
Arrays.sort返回void(see doc)。
您可以做的是对数组进行排序。
<PackageReference Include="MyConsole" Version="2.1.19-alpha">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
然后将结果写入文件。
Arrays.sort(numbers);
完整示例:
for (int i = 0; i < 100; i ++) {
output.print(numbers[i] + " ");
}
答案 1 :(得分:0)
我建议将写入文件的代码提取到方法中。由于它只需要路径和内容,因此可以在两个文件中重复使用,这将使您的生活更轻松。
如果您将行号包含在错误发生的位置,这也非常有帮助,因为它并不总是清楚抛出异常的位置。
据我从您的问题中了解到,问题在于生成一些数字,将其写入文件,最后对它们进行排序,然后将其写入另一个文件。我使用相同的方法编写了一些代码,但进行了一些重组。希望对您有所帮助。
public static void main(String[] args) {
int[] randomData = new Random().ints(100).toArray();//just a short way to generate numbers. Use your own.
File numbers = writteArray("Numbers.txt", randomData);
Arrays.sort(randomData);
File sorted = writteArray("Sorted.txt", randomData);
}
public static File writteArray(String Path, int[] randomNumbers){
File numbers = new File(Path);
//if the file does not exist it will be created automatically
try(PrintWriter fileWritter = new PrintWriter(numbers)) {
//just an example of how to write them. Use your prefered format
//also you can use the append function to not lose the previous content
for (int e : randomNumbers)
fileWritter.printf(" %d", e);
fileWritter.println();
}
catch (FileNotFoundException e){
e.printStackTrace();
}
return numbers;
}
作为编辑,如果以后不需要文件,可以使writeArray()函数返回void。