import java.io.*;
import javax.swing.*;
import javax.tools.*;
import java.util.*;
import java.lang.Math.*;
import java.lang.*;

class functiongenerator_xr 
 {
  String fonksiyon;
  String dosyaismi;
  String sinif;
  PrintStream fout;
  PrintStream ferr;

  public functiongenerator_xr(String dosyaismi,String fonksiyon)
  { this.fonksiyon=fonksiyon;
    this.dosyaismi=dosyaismi;
    try {
    fout=new PrintStream(new FileOutputStream("print.txt"));
    ferr=new PrintStream(new FileOutputStream("error.txt"));
    }catch(FileNotFoundException e1) {System.err.println("dosya bulunamadı");} 
  }
  
  public functiongenerator_xr(String fonksiyon)
  {this.fonksiyon=fonksiyon;
   dosyaismi="fxr";
  }
  
  public void addfunction(String fonksiyon)
  {this.fonksiyon=fonksiyon;}
  
  public String toString()
  {return fonksiyon;}
  
  public functiongenerator_xr()
  {fonksiyon="1\nx\nx*x\nx*x*x\nx*x*x*x\n";
   dosyaismi="fxr";
  }
  
 public  String createfunction() 
 {String isim=dosyaismi+".java";
 if((fonksiyon.length()-2)==fonksiyon.lastIndexOf("\n"))
 {fonksiyon=fonksiyon.substring(0,fonksiyon.length()-2);}
 String s1[]=fonksiyon.split("\\n");
 String s="";
 try {PrintWriter ffout=new PrintWriter(new BufferedWriter(new FileWriter(isim))); 
 s+=" class "+dosyaismi+" extends f_xr\n";
 s+=" {\n";
 s+=" public double func(double x,int i)\n";
 s+=" {  double xx=1.0;\n";
 s+="    if(i==0) xx="+s1[0]+";\n";
 for(int ii=1;ii<s1.length;ii++)
 {s+="   else if(i=="+ii+") xx="+s1[ii]+";\n";}
 s+=" return xx;\n";
 s+="}\n";
 s+="}\n";
 sinif=s;
 ffout.println(s);
 //System.out.println(s);
 ffout.close();
 }
 catch(IOException e1) {System.err.println("girdi hatası.");} 
 catch(NumberFormatException e2){};
 try
 {//java derleyicisi
 JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
 int rc = javac.run(null,null,null,isim);
 }
 catch(NullPointerException e1) {System.err.println("NULL POINTER");} 
 return fonksiyon;
}

 protected void finalize() throws Throwable
 {super.finalize();}
 
 public static void main(String arg[])
 {
  String func="1\nx\nx*x\nx*x*x\n";
  functiongenerator_xr xr=new functiongenerator_xr(func);
  xr.createfunction();	 
 }
 }
