【问题标题】:Write out java vector results to file将 java 向量结果写入文件
【发布时间】:2013-04-29 17:03:04
【问题描述】:

该程序应该使用向量计算素数并将结果写入文件。当我运行它时,它会计算 2-64 的质数并将其打印到屏幕上。但是当我检查它正在创建的文本文件时,它会在文件中写入一些其他数据而不是结果。我在这里没有做什么?

import java.util.*;
import java.io.*;

public class PrimeByVector
{
        public static void main(String[] args)
        {
        try
        {
                ObjectOutputStream OutputS = new ObjectOutputStream(new FileOutputStream("PrimeNumbers.txt"));
                DataOutputStream DataOS = new DataOutputStream(OutputS);
                final int NUMBER_PER_LINE = 10;
                int count = 0;
        //      java.util.Vector vector = new java.util.Vector();
                Vector v = new Vector();
                System.out.println("The primes before 64 are: \n");

                for (int n = 2; n < 64; n++)
                {
                        boolean isPrime = true;
                        for (int i = 0; i < v.size(); i++)
                        {
                                int primeNumber =
                                        ((Integer)(v.elementAt(i))).intValue();
                                if (primeNumber > Math.sqrt(n)) break;

                                if (n % primeNumber == 0)
                                {
                                        isPrime = false;
                                        break;
                                }
                        }
                        if (isPrime)
                        {
                                count ++;
                                v.addElement(new Integer(n));
                                if (count % NUMBER_PER_LINE == 0)
                                {
                                        System.out.println(n);
                                }
                                else
                                        System.out.print(n + " ");
                        }
                        DataOS.write(n);
                }
                DataOS.close();

                }
                catch(IOException e)
                {
                        System.out.println("Error!!!!!");
                }
        }
}

【问题讨论】:

    标签: java vector fileoutputstream objectoutputstream dataoutputstream


    【解决方案1】:

    您使用的是DataOutputSteam,它通常用于写出二进制数据。如果您希望将数据以计划文本形式写入文件,请像这样实例化您的输出:

    PrintWriter out = new PrintWriter(new FileWriter("PrimeNumbers.txt"));
    

    然后,当需要输出时,执行以下操作:

    out.println(n);
    out.flush();
    

    然后像这样关闭它:

    out.close();
    

    这将每行打印一个;不确定这是否正是您想要的。

    另外,我在您的代码中注意到,您在检查数字是否为素数的 if 语句之外写入 DataOS,这意味着您会将所有数字写入文件,而不仅仅是素数。

    如果您需要在文件中遵循与 System.out 相同的约定,则将代码更改为如下所示:

    if (count % NUMBER_PER_LINE == 0)
    {
        System.out.println(n);
        out.println(n);
    }
    else{
        System.out.print(n + " ");
        out.print(n + " ");
    }
    out.flush();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      相关资源
      最近更新 更多