问题描述
我的代码应该执行以下操作。它会读取文本文件的最后一个素数,并继续写下所有下面的素数。
public static void PrintPrimesIntoFile(){
File primenumbers = new File("C:/Users/Leon/IdeaProjects/NumberTheory/primes.txt");
String lastprim = "";
int lp = 0;
Writer wr = null;
//create file or check existence
if(!primenumbers.exists())
{
try{
primenumbers.createNewFile();
}catch(IOException e){
e.printstacktrace();
}
}
//read last line
try{
Scanner sc = new Scanner(primenumbers);
while(sc.hasNext()){
lastprim = sc.next();
}
lp = Integer.parseInt(lastprim);
lp++;
}catch(IOException e){
e.printstacktrace();
}catch(NumberFormatException e){
e.printstacktrace();
}
System.out.println(lastprim);
//print next numbers
try{
wr = new FileWriter(primenumbers,true);
while(true){
if(NumberTheoryFunctions.CheckPrime(lp)){
wr.write(new Integer(lp).toString());
System.out.println(lp);
wr.write("\r\n");
}
lp++;
}
}catch(IOException e){
e.printstacktrace();
}
}
问题仅与最后一个try和catch块内的循环有关。我检查数字是否为质数,如果为质数,则将其写入文件。如果没有,我转到下一个号码。直到我关闭程序,程序才应该这样做。
我的问题是,不是每个检查的数字都是质数还是不是质数都写入文件中。例如,当我停止编程时,控制台显示数字1022821,但是在我的文件中,最后一个数字是1020893。
甚至发生(这是真正的问题)单个数字没有被完全写下来的情况。例如,我的程序原本应该写1022701,但是它只是写102而已停止。
由于最后一个循环一直持续下去,所以我什至无法在代码中的任何地方编写wr.close()
。
有人可以帮我解决这个问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)