Imprimir próprio código-fonte sem ajuda de arquivo nenhum!......[RESOLVIDO]

17 respostas
arthur_roots

Imprimir o próprio código-fonte
sem ajuda de arquivo nenhum!
será ki existe um comando ki faça isso?

17 Respostas

edmarr

\o/

System.out.println("");
T

http://www.cs.princeton.edu/introcs/76computability/Quine.java

public class Quine { public static void main(String[] args) { char c=34; System.out.println(s+c+s+c+';'+'}'); } 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=";}

Para outras linguagens, veja:

arthur_roots

NUm deu certo num?

tipo o programa tem ki roda e imprimir suas proprias linhas de programção!
to aki procurando um comando mais não acho!

Marky.Vasconcelos

Não entendi o sentido desse Quine Computing.

M
  1. Imprimir -> saída do console

ou

  1. Imprimir -> impressora

Qual dos dois?

De qualquer forma, é preciso especificar os arquivos os quais você quer imprimir (crie uma instância de File para cada arquivo de código fonte para depois imprimi-los).

M

arthur_roots:
NUm deu certo num?

tipo o programa tem ki roda e imprimir suas proprias linhas de programção!
to aki procurando um comando mais não acho!


Se for isso, veja o que o thingol colocou acima.

arthur_roots

BOm dia!

mais no enunciado ele pedi pra não usar nenhuma ajuda de arquivo…!

E

Amigo, você não entendeu o enunciado.
O que o seu professor pediu é um programa do tipo “quine”, tal como o que o Thingol mostrou.
Para você fazer esse programa “Quine.java” rodar, você precisa copiá-lo para um arquivo Quine.java, gravá-lo e então compilá-lo (comando javac Quine.java). Depois, você precisa rodá-lo (java -cp . Quine).
A saída do programa Quine é o próprio texto do programa Quine. OK?

E

O que o professor não quer é um programa do seguinte tipo:

import java.io.*;
classe ProgramaIncorreto {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader (new FileReader ("ProgramaIncorreto.java"));
        for (String linha = br.readLine(); linha != null; linha = br.readLine()) {
            System.out.println (linha);
        }
        br.close();
    }
}

O programa acima imprime a si próprio (desde que o arquivo “ProgramaIncorreto.java” esteja no diretório corrente), mas não vale porque precisa de um arquivo adicional, não só o do próprio programa. OK?

maior_abandonado

acredito que de para você pegar a referencia a classe pelo suaClasse.class.getREsourceAsStream(“NomeDaSuaClasse”);

a partir dai você le o conteudo como se fosse um texto e imprime (diferente do exemplo que seu processor não quer, desse jeito funciona mesmo que a classe estiver dentro de um jar por exemplo).

E

maior_abandonado:
acredito que de para você pegar a referencia a classe pelo suaClasse.class.getREsourceAsStream(“NomeDaSuaClasse”);

a partir dai você le o conteudo como se fosse um texto e imprime (diferente do exemplo que seu processor não quer, desse jeito funciona mesmo que a classe estiver dentro de um jar por exemplo).

Não, ele não quer que o programa seja lido de um arquivo, de um resource ou coisa que o valha. De qualquer maneira, se fizer isso, vai acabar puxando o .class, não o .java, e você não vai ter um resultado muito agradável. A idéia de um programa “quine” é que o código fonte seja suficiente para imprimir a si próprio sem precisar de qualquer outro auxílio externo.

gomesrod

Também não imagino aplicações práticas, acho que é só por diversão mesmo… um tipo de desafio.

E

É claro que isso não é nem um pouco prático, conforme vocês deveriam ter visto naquele link da Wikipedia. É só uma curiosidade teórica.

lina

++

arthur_roots

Agradecido mesmo! por todas as respostas

eu estou iniciando no Java então achu ki esse exercicio eu vou compreender melhor mais pra frente!

mais vou deixar salvo os
comandos que vcs passaram!!!

Agradecido pela atenção de Todos!

E

Como foi dito, é só uma diversão.

http://www.nyx.net/~gthompso/quine.htm

tem mais exemplos de quines.

maior_abandonado

entanglement:
maior_abandonado:
acredito que de para você pegar a referencia a classe pelo suaClasse.class.getREsourceAsStream("NomeDaSuaClasse");

a partir dai você le o conteudo como se fosse um texto e imprime (diferente do exemplo que seu processor não quer, desse jeito funciona mesmo que a classe estiver dentro de um jar por exemplo).

Não, ele não quer que o programa seja lido de um arquivo, de um resource ou coisa que o valha. De qualquer maneira, se fizer isso, vai acabar puxando o .class, não o .java, e você não vai ter um resultado muito agradável. A idéia de um programa "quine" é que o código fonte seja suficiente para imprimir a si próprio sem precisar de qualquer outro auxílio externo.

certo, eu tinha intendido errado quanto a ser lido de um arquivo, pensei que por você compilar do proprio arquivo .java isso não fosse considerado…

mas quanto a funcionar, funciona sim, quando você pega o resource, ele pega o local onde esta o arquivo da classe e não o arquivo em si… (eu testei aqui e funcionou

Criado 23 de fevereiro de 2010
Ultima resposta 24 de fev. de 2010
Respostas 17
Participantes 9