Filewriter不会将所有数字都写入我的文件

问题描述

我的代码应该执行以下操作。它会读取文本文件的最后一个素数,并继续写下所有下面的素数。

 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 (将#修改为@)