我创建了一个名为fileWriter
的方法,它将一个随机整数数组输出到一个txt文件中。这可以正常工作,但是当我尝试使用我的其他fileReader
方法时,它应该读取该文件并将其添加到另一个数组,即使文件已经创建,它也会给我一个NoSuchElementException
(我检查过)。我第二次运行该程序它确实工作,但文件现在的数量是之前的两倍。我尝试在将数组导入之前创建一个空白文件,但是第一次运行程序时它仍然给出了相同的错误消息。如果有人能够暗示为什么会发生这种情况,我们将不胜感激。
这是我的代码:
/*******************************************************************************/
import java.util.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class randomNum {
public static void main(String[] args) {
FileWriter f;
try {
//here i create a blank file to try and fix the NoSuchElements exception
PrintWriter x=new PrintWriter(f=new FileWriter("C:\\LOG\\a3Unsorted.txt"));
} catch (IOException e) {
e.printStackTrace();
}
Random gen = new Random();
//This creates the original array
int[] array=new int[10];
for(int i=0;i<array.length;i++){
int rdm=gen.nextInt(100);
array[i]= rdm;
}
//call the other class
Sort num = new Sort(array);
//call method fileWrite from class Sort to send the array to the file
Sort.fileWrite(array);
//call method fileRead from class Sort to read the file thats been created (this is where i think could be the issue)
Sort.fileRead(array);
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}//prints out the array from the file in default output
}
}
/***************************************************************************/
import java.io.*;
import java.util.NoSuchElementException;
import java.util.Scanner;
public class Sort {
private static PrintWriter out;
private static FileWriter file;
public Sort(int[] array) {
}
/***************************************************************************/
public static void fileRead(int[] array){
Scanner s = null;
try {
s = new Scanner(new File("C:\\LOG\\a3Unsorted.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
array = new int[s.nextInt()];
for (int i = 0; i < array.length; i++)
array[i] = s.nextInt();
}
/**************************************************************************/
public static void fileWrite(int[]array){
try {
out = new PrintWriter(file = new FileWriter("C:\\LOG\\a3Unsorted.txt",true));
for (int i=0; i<array.length; i++)
{
out.println(array[i]);
}
out.close();
} catch (IOException ex) {
}
}
}//class
答案 0 :(得分:0)
在这一行
array = new int[s.nextInt()];
有一些非常错误的东西。你实际做的是从文件中读取第一个数字,然后实例化一个数字,该数字的长度由该数字给出。我不认为这是你想要的。如果此数字大于要读取的剩余数字的数量,当您尝试读取超出文件末尾的时间时,您将收到异常。
但是将array
参数传递给此方法
public static void fileRead(int[] array)
,如果将新数组实例分配给array
变量?原始参考文献将丢失。
无论如何,你的代码有点乱,有很多静态和未使用的变量,例如: Sort
的构造函数。