为什么我的writefile()没有编译



writefile()方法应该向给定的输出文件写入给定数组中的所有整数,每行一个。对于这一部分,merge方法应该返回一个足够大的新数组,以容纳前两个数组(a和b)的内容,然后将前两个复制到该数组中,而不考虑顺序。

这是运行程序时放在命令行中的内容:

java Merge1 sorted1.txt sorted2.txt sortedout.txt

这是排序1.text.中的内容

125180138212237306316317337356413422511534577621708717738738846850900

这是排序的2.txt:

334177101157164192235412415484499500533565630667786846851911949968986

我该怎么做?

这是我到目前为止的代码:

import java.io.*;
import java.util.Scanner;
public class Merge1
{
public static void main(String[] args)
{
    File sorted1 = new File (args[0]);
    File sorted2 = new File (args[1]);
    File sortedout = new File (args[2]);
    try{
    Scanner input = new Scanner(sorted1);
    readfile(input);
    }
    catch (FileNotFoundException e) {
        System.out.println("File not found");   
    }
    try{
    Scanner input = new Scanner(sorted2);
    readfile(input);
    }
    catch (FileNotFoundException e) {
        System.out.println("File not found");   
    }
    try{
    Scanner input = new Scanner(sortedout);
    readfile(input);
    }
    catch (FileNotFoundException e) {
        System.out.println("File not found");   
    }


} // end main
static int[] readfile(Scanner input)
{
    String num = "";
    while(input.hasNextInt())
    {
        num += input.nextInt() + " ";
    }
    String[] array = num.split(" ");
    int[] list = new int[array.length];
    for(int i = 0; i < array.length; i++)
    {
        list[i] = Integer.parseInt(array[i]);
        System.out.println(list[i]);
    }
    return list;
} // end readfile
static void writefile(PrintStream output, int[] a)
{   
    output.println(merge(int[] a, int[]b)); 
} // end writefile 
static int[] merge(int[] a, int[] b)
{
        int[] answer = new int[a.length + b.length];
    int i = 0;
    int j = 0;
    int k = 0;
    while (i < a.length && j < b.length)
        {
            if (a[i] < b[j])
            {       
                    answer[k] = a[i];
            k++;
            i++;
                }
            else  
            {      
                    answer[k] = b[j]; 
            k++;
            j++;
            }              
        }
        while (i < a.length)  
        {
            answer[k] = a[i];
        k++;
        i++;
    }
    while (j < b.length)
    {    
            answer[k] = b[j];
        k++;
        j++;
        }   
    return answer;
} // end merge  

} // end Merge1

总是有System.arraycopy方法将一个数组复制到另一个数组中,但您也可以使用动态数组,如ArrayList。System.arraycopy描述

至于write方法,所需要的只是您传递的PrintStream,为每个值打开一个FileOutputStream和一个简单的println。对于排序,有很多排序算法,一些集合已经实现了排序方法。

相关内容

  • 没有找到相关文章

最新更新