从两个源文件获取文件输入

时间:2015-03-27 01:52:17

标签: java

我正在尝试编写一个程序,将两个数组从两个不同文本文件中的数字合并为第三个数组。

我已经完成了将两个数组合并到第三个数组的方法 但我不知道如何从第二个文件中获取数字

这是我目前的代码:

public static void main(String[] args) {
    int[] mergedArray = {};

    Scanner input = new Scanner(System.in);

    System.out.println("Enter the name of your first file (including file extension): ");
    String filename = input.next();

    int[] firstArray;
    try (Scanner in = new Scanner(new File(filename)))
    {
        int count = in.nextInt();

        firstArray = new int[count];
        firstArray[0] = count;

        for (int i = 0; in.hasNextInt() && count != -1 && i < count; i++) {
            firstArray[i] = in.nextInt();
        }



    } catch (final FileNotFoundException e) {
        System.out.println("That file was not found. Program terminating...");
        e.printStackTrace();

    }
}

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您只需创建一个新的扫描仪,每个文件一个。 像那样:

public static void main(String[] args) {
    int[] mergedArray = {};
    Scanner input = new Scanner(System.in);
    System.out.println("Enter the name of your first file (including file extension): ");
    String filename1 = input.next();
    System.out.println("Enter the name of your second file (including file extension): ");
    String filename2 = input.next();
    int[] firstArray = null;
    int[] secondArray = null;
    try {
        Scanner in = new Scanner(new File(filename1));
        int count = in.nextInt();
        firstArray = new int[count];
        firstArray[0] = count;
        for (int i = 0; in.hasNextInt() && count != -1 && i < count; i++) {
            firstArray[i] = in.nextInt();
        }
    } catch (final FileNotFoundException e) {
        System.out.println("That file was not found. Program terminating...");
        e.printStackTrace();
    }
    try {
        Scanner in2 = new Scanner(new File(filename2));
        int count = in2.nextInt();
        secondArray = new int[count];
        secondArray[0] = count;
        for (int i = 0; in2.hasNextInt() && count != -1 && i < count; i++) {
            secondArray[i] = in2.nextInt();
        }
    } catch (final FileNotFoundException e) {
        System.out.println("That file was not found. Program terminating...");
        e.printStackTrace();
    }
    // do the merge operation with the 2 arrays
}

答案 1 :(得分:0)

试试这个

import java.io.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.util.Scanner;
import static java.lang.System.*;
import java.util.Collection;
import java.util.Collections;
import java.util.ArrayList;
import java.util.Arrays;

public final class TwoSourceMergeOne{
    public static void main(String[] args) {
        Integer [] mergedArray = null;

        try(Scanner console = new Scanner(in)){
            out.println("Enter the Source file names (including file extensions) : ");
            out.print(">> ");
            String sourceX = console.next();
            out.print("\n>> ");
            String sourceY = console.next();

            Path sourceXPath = Paths.get(sourceX);
            Path sourceYPath = Paths.get(sourceY);

            if(!Files.exists(sourceXPath,LinkOption.NOFOLLOW_LINKS) || !Files.exists(sourceXPath,LinkOption.NOFOLLOW_LINKS)){
                out.println("Sorry. Some source files are missing. Please make sure that they are available !");
                return;
            }

            Scanner xInput = new Scanner(new FileInputStream(sourceXPath.toFile()));
            Scanner yInput = new Scanner(new FileInputStream(sourceYPath.toFile()));

            Collection<Integer> sourceXData = new ArrayList<>();
            Collection<Integer> sourceYData = new ArrayList<>();

            while(xInput.hasNextInt()) sourceXData.add(xInput.nextInt());

            while(yInput.hasNextInt()) sourceYData.add(yInput.nextInt());

            if(!sourceXData.isEmpty() && !sourceYData.isEmpty()){
                Integer [] soure_x_array = sourceXData.toArray(new Integer[sourceXData.size()]);
                Integer [] source_y_array = sourceYData.toArray(new Integer[sourceYData.size()]);               
                mergedArray = new Integer[soure_x_array.length+source_y_array.length];

                int index = 0;
                for(int x : soure_x_array) mergedArray[index ++] = x;
                for(int y : source_y_array) mergedArray[index ++] = y;

                out.printf("The merged array is = %s",Arrays.toString(mergedArray));
            }else{
                out.println("Sorry. No input data !!!");
            }
        }catch(IOException cause){ cause.printStackTrace();}
    }
}

两个源文件应与程序位于同一文件夹中。