将java矢量结果写入文件
该程序应该使用向量计算素数,并将结果写入文件。当我运行它时,它计算出2-64之间的素数,并将其打印到屏幕上。但是当我检查它正在创建的文本文件时,它会将一些其他数据写入文件,而不是结果。我在这里不做什么将java矢量结果写入文件,java,vector,fileoutputstream,objectoutputstream,dataoutputstream,Java,Vector,Fileoutputstream,Objectoutputstream,Dataoutputstream,该程序应该使用向量计算素数,并将结果写入文件。当我运行它时,它计算出2-64之间的素数,并将其打印到屏幕上。但是当我检查它正在创建的文本文件时,它会将一些其他数据写入文件,而不是结果。我在这里不做什么 import java.util.*; import java.io.*; public class PrimeByVector { public static void main(String[] args) { try {
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!!!!!");
}
}
}
import java.util.*;
导入java.io.*;
公共类素数向量
{
公共静态void main(字符串[]args)
{
尝试
{
ObjectOutputStream OutputS=新的ObjectOutputStream(新的FileOutputStream(“PrimeNumbers.txt”);
DataOutputStream DataOS=新的DataOutputStream(输出);
每行的最终整数=10;
整数计数=0;
//java.util.Vector=new java.util.Vector();
向量v=新向量();
System.out.println(“64之前的素数是:\n”);
对于(int n=2;n<64;n++)
{
布尔值isPrime=true;
对于(int i=0;i数学sqrt(n))中断;
如果(n%primeNumber==0)
{
isPrime=false;
打破
}
}
如果(iPrime)
{
计数++;
v、 加法(新整数(n));
如果(每行计数%NUMBER=0)
{
系统输出println(n);
}
其他的
系统输出打印(n+“”);
}
DataOS.write(n);
}
DataOS.close();
}
捕获(IOE异常)
{
System.out.println(“错误!!!”;
}
}
}
您使用的是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();