2012-06-26 34 views
4

我有一个小测验,我自己无法解决。 我想构建一个将用java打印自己的源代码的程序。任何人都知道如何做到这一点? 像这个例子:打印自己的源代码的Java应用程序

public class SourcePrint { 

    private static final long serialVersionUID = 1L; 

    public void test(){ 
     System.out.println("Hi I'm test"); 

    } 
    public static void main(String[] args) { 
     new SourcePrint().test(); 
    } 

} 

当我们运行此,输出将是相同的是这样的:

public class SourcePrint { 

    private static final long serialVersionUID = 1L; 

    public void test(){ 
     System.out.println("Hi I'm test"); 

    } 
    public static void main(String[] args) { 
     new SourcePrint().test(); 
    } 

} 

我不知道如何做到这一点。任何人都知道解决方案或至少提示?这不是反编译器,测验制造者告诉我这个提示是“静态的”。

+0

基内斯一般涉及打印源,而不从自己的源文件,该文件被视为作弊[中关于这在阅读问题的种类]。您的解决方案要求是否指定您是否允许这样做? – yoonsi

回答

3

这里是可以在Java中使用了奎因的例子:

public class Quine { 

    static String s = "public class Quine { public static void main(String[] args) { char c=34; System.out.println(s+c+s+c+';'+'}'); } static String s="; 

    public static void main(String[] args) { 
     char c = 34; 
     System.out.println(s + c + s + c + ';' + '}'); 
    } 
} 

当然并看似强制性链接到维基百科:Wikipedia: Quine。根据该计划有多大这里这个环节也可能有一些很好的例子:Java Quine

+0

最后一个链接已损坏,请修复。 – GGrec

0
import java.io.*; 
class Source 
{ 
    public static void main(String args[]) 
    { 
     try{ 

      //open the file 
     FileInputStream fstream=new FileInputStream("D://Springs WorkSpace/Testing/src/Source.java");//here pass the own java file name with full path 

      // use DataInputStream to read binary NOT text 
     // DataInputStream in=new DataInputStream(fstream); 

      // 
     BufferedReader br=new BufferedReader(new InputStreamReader(fstream)); 
      //read data line by line from the file 
      String s; 
      while((s = br.readLine()) != null) 
      { 
       System.out.println(s); 
      } 
      in.close(); 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 
相关问题