2x mais versos

2x mais versos

por Paulo Mei -
Número de respostas: 6
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
Em resposta à Paulo Mei

Re: 2x mais versos

por Paulo Mei -
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...
Em resposta à Paulo Mei

Re: 2x mais versos

por Arthur Gabriel de Santana -
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)
Em resposta à Paulo Mei

Re: 2x mais versos

por Marcelo Queiroz -
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


Em resposta à Paulo Mei

Re: 2x mais versos

por Julio Felipe Angelini -
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.
Em resposta à Julio Felipe Angelini

Re: 2x mais versos

por Julio Felipe Angelini -
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.
Em resposta à Julio Felipe Angelini

Re: 2x mais versos

por Paulo Mei -
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ê.