Em algumas simulações, o programa está gerando 2x mais versos do que o pedido, com e sem rima. Mas especificamente em uma sim e outra não.
Se na simulação1, eu peço 12 versos e ele faz 12 versos.
Na simulação2, eu peço 12 e ele faz 24.
Na simulação3, eu peço 4 e ele faz 4.
Na simulação4, eu peço 8 e ele faz 16.
Na simulação5, eu peço 6 e ele faz 6
Alguém tem alguma idéia do porque?
OBS: Eu faço as simulações na janela de interações mesmo, usando o F2
Se eu declaro a variável como igual a zero, para de acontecer isso.
De:
class GeradorDadaista
{
int nVersos;
...
}
Para:
class GeradorDadaista
{
int nVersos=0;
...
}
Isso não faz o menor sentido -.- Para mim ambos são iguais.
Uma explicação lógica, por favor...
De:
class GeradorDadaista
{
int nVersos;
...
}
Para:
class GeradorDadaista
{
int nVersos=0;
...
}
Isso não faz o menor sentido -.- Para mim ambos são iguais.
Uma explicação lógica, por favor...
Oi Mei, acho que isso que você postou não é informação suficiente. Certamente não é um comportamento esperado. Se não quiser colocar mais coisa aqui no fórum, me mande um e-mail com o seu código e eu tenho descobrir o que aconteceu. (até porque agora eu também fiquei curioso)
Paulo,
Também não tenho dados para saber o que está acontecendo no seu programa, mas aproveito para fazer um comentário sobre inicializações automáticas em java que podem ser úteis em outros casos...
A linguagem garante inicialização automática para atributos (valores associados à classe ou aos objetos da classe) e na alocação de vetores em geral. Ela NÃO GARANTE inicialização automática para variáveis locais (dos métodos ou blocos dentro dos métodos). Se você fizer algo como
void imprime() { int i; System.out.println(i); }
isso vai gerar um erro de compilação, dizendo que a variável i foi usada sem ser inicializada. Isso é certamente mais útil do que rodar o programa com algum valor arbitrário de i (como faria a linguagem C, por exemplo).
Abraços,
Marcelo
Também não tenho dados para saber o que está acontecendo no seu programa, mas aproveito para fazer um comentário sobre inicializações automáticas em java que podem ser úteis em outros casos...
A linguagem garante inicialização automática para atributos (valores associados à classe ou aos objetos da classe) e na alocação de vetores em geral. Ela NÃO GARANTE inicialização automática para variáveis locais (dos métodos ou blocos dentro dos métodos). Se você fizer algo como
void imprime() { int i; System.out.println(i); }
isso vai gerar um erro de compilação, dizendo que a variável i foi usada sem ser inicializada. Isso é certamente mais útil do que rodar o programa com algum valor arbitrário de i (como faria a linguagem C, por exemplo).
Abraços,
Marcelo
Bom, é possível que o fato de vc pedir rima ou não esteja influenciando isso... agora por que isso não acontece qdo vc declara a variável igual a zero é uma boa pergunta o_O
pode ter algum if / while / for que considera alguma coisa sobre o nVersos antes mesmo de vc pedir para o úsuário o nVersos.
quando você declara ele do 1o jeito, ele na verdade faz
int nVersos = null;
e não
int nVersos = 0;
ou seja, são diferentes.
pode ter algum if / while / for que considera alguma coisa sobre o nVersos antes mesmo de vc pedir para o úsuário o nVersos.
quando você declara ele do 1o jeito, ele na verdade faz
int nVersos = null;
e não
int nVersos = 0;
ou seja, são diferentes.
Agora vi que vc mencionou a rima no seu post ^^V
provavelmente seu programa está imprimindo normalmente sem rima...
mas quando você pede rima, a cada vez ele imprime dois versos rimantes, em vez de um verso só.
Mas mesmo no caso da rima, ele pensa que só imprimiu um verso, logo ele imprime 2 versos, nVersos vezes, ou seja, ele imprime 2*nVersos versos.
Se ese for mesmo o problema, é só ajustar o passo do for ou while que vc usa para q ele considere o caso da rima. Tem muitos jeitos de fzr isso.
Porém dependendo do jeito que vc fizer, pode levar a um problema no último verso de um poema ímpar com rimas.
provavelmente seu programa está imprimindo normalmente sem rima...
mas quando você pede rima, a cada vez ele imprime dois versos rimantes, em vez de um verso só.
Mas mesmo no caso da rima, ele pensa que só imprimiu um verso, logo ele imprime 2 versos, nVersos vezes, ou seja, ele imprime 2*nVersos versos.
Se ese for mesmo o problema, é só ajustar o passo do for ou while que vc usa para q ele considere o caso da rima. Tem muitos jeitos de fzr isso.
Porém dependendo do jeito que vc fizer, pode levar a um problema no último verso de um poema ímpar com rimas.
Não, ele tava dobrando tanto COM como SEM rima.
Bem, vai assim mesmo... Como o Vinícius disse, se está funcionando, então já está bom. Depois eu tento entender o porquê.
Bem, vai assim mesmo... Como o Vinícius disse, se está funcionando, então já está bom. Depois eu tento entender o porquê.