编写程序,求2-200之间的所有素数,并将结果以文本方式保存到prime.dat文件中。
import java.io.*;
public class Prime
{
public static void main(String[] args) throws IOException
{
int i,j;
for(j=2;j<=200;j++)
{
for(i=2;i<=j/2;i++)
{
if(j%i==0)
break;
}
if(i>j/2)
{
File file=new File("c:/test.txt"); 
file.createNewFile(); 
FileWriter w=new FileWriter(file); 
w.write(j); 
w.close(); 
}
}
}
}
请指出以上程序的错误并更正,谢谢!

解决方案 »

  1.   

    File file=new File("c:/test.txt"); 
    file.createNewFile(); 
    FileWriter w=new FileWriter(file); 这一段放到循环前面
    w.close(); 
    放到循环后面
    否则一直只保存最后一个了!
      

  2.   

    不要老是createnewfileimport java.io.*; 
    public class Prime 

    public static void main(String[] args) throws IOException 

    int i,j; 
    for(j=2;j <=200;j++) 

    for(i=2;i <=j/2;i++) 

    if(j%i==0) 
    break; 

    if(i>j/2) 

    File file=new File("c:/test.txt"); 
    if(!file.exists())
    file.createNewFile(); 
    FileWriter w=new FileWriter(file); 
    w.write(j); 
    w.close(); 




      

  3.   

    嗯,最好放到循环外面,也可以改一下FileWriter的构造函数
    FileWriter w=new FileWriter(file, true); 
      

  4.   

    import java.io.*; 
    public class Prime 
    {
    public static boolean isprime(int x) {
        for (int i = 2; i <= Math.sqrt(x); i++) {
          if (x % i == 0)
            return false;
        }
        return true;
      } 
    public static void main(String[] args) throws IOException 
    {
    PrintWriter out=new PrintWriter("c:/test.txt");
    int n = 1;
    int i = 0;
        out.printf("%-3d ", 2);
        for (i = 3; i <= 200; i += 2) {
          if (isprime(i)) {
           out.printf("%-3d ", i);
            n++;
            if (n < 6)
              continue;
            out.println();
            n = 0;
          }
        }
    out.close();

    }
      

  5.   

    package siyue;import java.io.*;
    public class Prime
    {
    public static void main(String[] args) throws IOException
    {
    File file=new File("c:/test.txt");
    file.createNewFile();
    FileWriter w=new FileWriter(file);

    int i,j;
    for(j=2;j <=200;j++)
    {
        for(i=2;i <=j/2;i++){
    if(j%i==0)
    break;
        }
    if(i>j/2)
    {
    w.write(String.valueOf(j)+"\n");
    }
     }
      w.close();
     }
      

  6.   

    package t;import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;public class FillSusu {
    public static void main(String[] args) throws IOException 

    File file=new File("c:/test.txt"); 
    file.createNewFile(); 
    FileWriter w=new FileWriter(file);  int i,j; 
    for(j=2;j <=200;j++) 

        for(i=2;i <=j/2;i++){ 
    if(j%i==0) 
    break; 
        } 
    if(i>j/2) 

    w.write(String.valueOf(j)+"\r\n"); 


      w.close(); 



    这样写入文件中的数据就不会有小黑方块了.