gpt4 book ai didi

java - 如何在Java中跳过第一个int逐行读取文件到数组?

转载 作者:行者123 更新时间:2023-12-01 22:10:47 25 4
gpt4 key购买 nike

我正在尝试用 Java 读取文件并将其存储到数组中。现在的问题是该文件具有以下结构。我将在下面给出 2 个示例文件:

输入文件结构

<number of lines>
<line number> <value>
.
.
.
<line number> <value>

input1.txt

5 
1 34
2 19
3 43
4 62
5 36

input2.txt

4
1 10.3430423
2 -34.234923
3 -100.39292
4 22

如您所见,文件以行数开头(例如 4 或 5)。在我的正常输入文本中,有超过 100000 行。

所以我的代码基本上获取用户输入,打开文件,创建一个数组大小和一个该大小的数组。现在我一直在阅读下一行并将值添加到我的 elements 数组中。行号不应添加到数组中。现在如您所见,我的元素数组被声明为字符串。是否可以实际读取文件、获取值的类型并创建该类型的数组?我认为它可以节省从字符串转换为 int 或 double 或 float 的麻烦?

下面是我的代码:

   public static void main(String args[]) throws NumberFormatException, IOException{
String inFile; //Input file name.
int filterSize; //Filter size (odd integer >= 3).
String outFile; //Output file name.
int arraySize;
String[] elements;
int index = 0;

//Scanner to take input file name, filter size and output file name.
Scanner keyboardInput = new Scanner(System.in);
System.out.println("Enter your keyboard input as follows: <data file name> <filter size(odd int >= 3> <output file name>");

//Assigning values to variables.
inFile = keyboardInput.next();
filterSize = keyboardInput.nextInt();
outFile = keyboardInput.next();


//Reading file into array using BufferReader
BufferedReader fileInput = new BufferedReader(new FileReader(inFile));
arraySize = Integer.parseInt(fileInput.readLine()); //Get Array Size

elements = new String[arraySize];

while(fileInput.readLine() != null){
elements[index] = fileInput.readLine();
index += 1;
}
}

感谢任何帮助。谢谢。

最佳答案

尝试这样做:

    Scanner sc = new Scanner(new File(inFile));
arraySize = sc.nextInt();
elements = new String[arraySize];

while(sc.hasNext())
{
sc.nextInt();
elements[index] = sc.next();
index += 1;
}

您创建新的扫描仪,然后您可以读取整数、 boolean 值等,而无需任何转换。因为您不需要当前数字的行,所以您只需读取该数字即可。您无需将其保存在任何地方。然后,您必须将下一个数字/字符串保存在 elements[index] 中。就这样了

关于java - 如何在Java中跳过第一个int逐行读取文件到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31903992/

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