Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我用Java保存的文本文件出现错误_Java_File_Text_Stream_Writer - Fatal编程技术网

我用Java保存的文本文件出现错误

我用Java保存的文本文件出现错误,java,file,text,stream,writer,Java,File,Text,Stream,Writer,我正在创建一个保存前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) Mat

我正在创建一个保存前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();}
    }

   }
import java.util.Scanner;
公共班级1
{
//这个方法测试给定的数字是否为素数。
公共布尔值isPrime(int num)
{
布尔素数=真;
int limit=(int)Math.sqrt(num);

对于(int i=2;i您正在调用
Writer.write(int)
,它将整数解释为Unicode码点。使用
str.toString()
将参数强制转换为字符串。完成此操作后,您可能还需要一些换行符。我建议将所有内容包装在
PrintWriter
中,并在其上使用
println

有两个问题。一个是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

你不会戴着眼罩开车,是吗?编码时不检查异常也是如此。好的一点…有一个很好的理由支持一致的源代码格式:)谢谢你,但是,现在作者正在写2-100的数字,我如何过滤它,只写通过iPrime测试的数字
if ( obj.isPrime ( i ) ) { // notice the curly bracket
    System.out.println ( i );
    record.add(i);
} // notice the curly bracket