gpt4 book ai didi

java - 如何合并N排序两个文本文件

转载 作者:行者123 更新时间:2023-12-02 11:38:36 24 4
gpt4 key购买 nike

我必须读入两个看起来像这样的文本文件....

文件一:10 1 2 3 4 5 67 75 47 18

文件二:5 65 74 57 68 28 38

第一个数字代表我应该使用多少个整数来填充我的数组。

我需要读取文件的第一行,然后使用该数字来填充两个数组,无论指定的元素数量如何。

我已经弄清楚如何读取两个文本文件并将它们连接在一起,但是我无法弄清楚如何仅从文件中获取第一个数字并使用它来确定之后应该使用多少个数字。

import java.io.File;
import java.util.Arrays;
import java.util.Scanner;


public class ReadData {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Please enter the first file name: ");
String input = s.nextLine();
System.out.println("Please enter the second file name: ");
String input2 = s.nextLine();

int[] data = readFiles(input);
int[] data2 = readFiles(input2);
//System.out.println(Arrays.toString(data));
//System.out.println(Arrays.toString(data2));
System.out.println(Arrays.toString(concat(data, data2)));
}

public static int[] readFiles(String file) {

try {

File f = new File(file);
Scanner s = new Scanner(f);
int counter = 0;
while(s.hasNextInt()) {
counter++;
s.nextInt();
}
int[] arr = new int[counter];

Scanner s1 = new Scanner(f);

for(int i = 0; i < arr.length; i++)
arr[i] = s1.nextInt();

return arr;
}
catch(Exception e) {
return null;
}
}
static int[] concat(int[]... arrays) {
int length = 0;
for (int[] array : arrays) {
length += array.length;
}
int[] result = new int[length];
int pos = 0;
for (int[] array : arrays) {
for (int element : array) {
result[pos] = element;
pos++;
}
}
return result;
}
}

最佳答案

对于初学者,我建议将整行作为单个字符串读取,然后使用解析器解析它,该解析器将使用空格作为分隔符。您将获得一个包含所有号码的 DS,这是一个更优雅的解决方案。(Java解析简单解决方案:http://pages.cs.wisc.edu/~hasti/cs302/examples/Parsing/parseString.html)

一旦获得包含数字的 DS,您就可以随意迭代它,记住第一个值决定 DS 上 future 迭代的数量。

假设您使用 java 8,我建议使用流功能来执行此操作:http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/

如果您需要任何进一步的阐述,请发表评论,祝您好运。

关于java - 如何合并N排序两个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48739203/

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