我已经阅读了几篇关于如何将txt文件读入int []的文章,并且通过多种方式,我还没有成功。
import java.io.*;
import java.util.Scanner;
public class SequenceSquare
{
private int[] arr;
public SequenceSquare()
{
int count = 0;
File fileName = new File("Sequence.txt"); // fileName for opening
try
{
Scanner input = new Scanner(fileName);
while (input.hasNextLine()) //while there is a line to read
{
if(input.hasNextInt()) //if this line has an int
{
count++; // increment count
input.nextInt(); //move to next integer
}
}
arr = new int[count]; // create arr with sufficient size
input.close(); // close scanning file
Scanner newInput = new Scanner(fileName);
for(int i = 0; i < arr.length; i++)
{
while (newInput.hasNextLine()) // same as above
{
if(newInput.hasNextInt()) // same as above
{
arr[i] = newInput.nextInt(); //store int scanned into arr
}
}
}
newInput.close();
}
catch(FileNotFoundException f)
{
f.printStackTrace();
}
}
"Sequence.txt"
1
2
5
9
29
30
7
9
111
59
106
130
-2
所以基本上在调用默认构造函数时,假设打开&#34; Sequence.txt&#34;并读取格式化为int数组的整数。在txt文件中,数字的格式为每行一个整数,如4 \ n 5 \ n等。 但是,当我遍历数组&#34; arr&#34;它好像没有内容。我已经实现了许多测试函数来测试是否已经填充(未列出)但是arr没有返回任何内容。请帮忙。请告诉我发生了什么。我宁愿知道对正在发生的事情的解释而不是答案,但两者都会这样做。另外我知道你可以使用arraylists和list来执行相同的功能,但我希望它是一个数组。如果你想看到我可以发布的整个课程,但其他代码是不必要的,因为它可以工作
答案 0 :(得分:0)
这就是我们如何使用数组来做到这一点。如果它是列表,它会更简单。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReading {
public static final String FILE_PATH = "D:\\testing.txt";
public static void main(String[] args) {
try {
int[] newArr = readFile(FILE_PATH);
//testing the new array
for(int i=0;i<newArr.length;i++){
System.out.println(newArr[i]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static int[] readFile(String pathToFile) throws NumberFormatException, IOException{
String sCurrentLine;
int[] arr = new int[countLines(pathToFile)];
BufferedReader br = new BufferedReader(new FileReader(pathToFile));
int i=0;
while ((sCurrentLine = br.readLine()) != null) {
arr[i] = Integer.parseInt(sCurrentLine);
i++;
}
br.close();
return arr;
}
public static int countLines(String pathToFile) throws NumberFormatException, IOException{
BufferedReader br = new BufferedReader(new FileReader(pathToFile));
int count =0;
while ((br.readLine()) != null) {
count++;
}
br.close();
return count;
}
}