3

最初の X 個の素数を保存するプログラムを作成していArrayListますが、テキスト ファイルに保存するとリストが完全に間違っています。これが私のコードです:

import java.util.Scanner;
public class Class1
{
  // This method tests whether a given number is prime or not.
   public boolean isPrime ( int num )
 {
boolean prime = true;
int limit = (int) Math.sqrt ( num );  

for ( int i = 2; i <= limit; i++ )
{
  if ( num % i == 0 )
  {
    prime = false;
break;
  }
}

return prime;
}

public static void main ( String[] args )
 {
  Class1 ob1=new Class1();
System.out.println("Where do you want to stop?");
Scanner scan = new Scanner(System.in);
int y = scan.nextInt();
for ( int i = 2; i <= y; i++ )
{
  if ( ob1.isPrime ( i ) )
System.out.println ( i );
  }
 }
 }

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;


 public class Output {
    public static void main(String args[]) throws IOException {
 Class1 obj = new Class1();OutputStream outputstream = new FileOutputStream("write.txt");
 Writer writer1 = new OutputStreamWriter(outputstream);

 try{

 int max =100;
  List<Integer> record = new ArrayList<Integer>(max);


  // Going write in this file

  for ( int i = 2; i <= max; i++ )
  {
   if ( obj.isPrime ( i ) )
    System.out.println ( i );
    record.add(i);

    } 
   for(Integer str: record){
   writer1.write(str);
    }

    }catch(IOException e){

    }finally{writer1.close();}
    }

   }

テキストファイルは次のようになります。

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\
4

2 に答える 2

8

を呼び出しWriter.write(int)ています。これは、整数を Unicode コード ポイントとして解釈します。str.toString()引数を文字列に強制するために使用 します。それを行った後、おそらくいくつかの改行も必要になるでしょう。すべてを a でラップしてPrintWriter使用printlnすることをお勧めします。

于 2012-08-27T19:25:06.090 に答える
1

2つの問題があります。1 つは、Marko が上で指摘したコード ポイントの問題です。

もう一つは

if ( obj.isPrime ( i ) )
    System.out.println ( i );
    record.add(i);

if ステートメントは system.out.println のみを対象としています。record.add は括弧がないため、対象外です。

代わりにこれを考慮してください:

if ( obj.isPrime ( i ) ) { // notice the curly bracket
    System.out.println ( i );
    record.add(i);
} // notice the curly bracket
于 2012-08-27T19:30:24.937 に答える