O que tem de errado nesse código?

9 respostas
AlissonGuj

Pessoal eu quero que fassa um fatorial ou seja pegue um número 5 por exemplo e faça a seguinte conta

5 * 4 * 3 * 2 * 1 (isso é a conta do fatorial) ou seja

pegar uma variavel e diminua o número até que o numero seja igual a 1
e se o cara digitar por exemplo 0 jogar na tela o número 1

tela=tfvisor.getText(); int conversor=Integer.parseInt(tela); if (conversor>=1){ while (conversor>=1){ int cont=conversor-1; int total=cont*conversor; tfvisor.setText(String.valueOf(total)); } }else{ tfvisor.setText("1"); }

Espero ter sido claro

obrigado

abraços!

9 Respostas

Ultralogic

O problema está no seu While.
O que está acontecendo é o seguinte, quando você clica no botão, o while começa a executar uma sequencia de comandos, e nao para mais, pq o seu numeor nao está retornando “1”, Dessa forma, fica em uma corrente infinita.
O que você tem que fazer eh tirar o while e fazer uma variavel guardar a última conversao feita, tipo,
digito 5 e clico no botao, uma var terá que guardar o valor
(*5). para que na proxima vez que você clicar no botao ele faça ??*4…
e assin oir diante
blz?

AlissonGuj

olhe a minha variavel conversor recebe o que tem na tela e a cont recebe conversor menos -1 e isso ele faz ate o numero for maior ou igual a 1

entende?

Ultralogic

sim, porém, quando executei o código, ele fazia uma sequencia infinita e mostrava sempre os mesmos valores, -1 contagem e 0 total.
Talvez nao tenha nada a ver, mas acredito ainda que seja o seu while que está ocasionando o problema

higomatos

Com base no seu código, fiz o seguinte:

import org.junit.Test;

public class Generic {

    @Test
    public void testeCodigo() {
        int conversor = 5;
        if (conversor >= 1) {
            int total = conversor;
            int cont = conversor;
            while (cont > 1) {
                total = total * (cont-1);
                System.out.println(total);
                cont--;
            }
        } else {
            System.out.println("1");
        }
    }
}

Veja se satisfaz!

AlissonGuj

valeu cara é isso mesmo

AlissonGuj

tela=tfvisor.getText(); int conversor = Integer.parseInt(tela); if (conversor >= 1) { int total = conversor; int cont = conversor; while (cont > 1) { total = total * (cont-1); tfvisor.setText(String.valueOf(total)); cont--; } } else { tfvisor.setText("1"); }

Ultralogic

legal, peguei o codigo já e ja estou usando na minha calculadora
soh precisei falzer algumas modificações e tah funcionando
vwl aew
agora preciso fazer mais um botao na minha calc pra preencher o espaço

AlissonGuj

a unica coisa que faltava é que não pegava da tela psy mas eu postei certinho ali

Ultralogic

isso sim
as modificaçoes de que eu falei eram quanto as minhas vars
que eram diferentes na nomenclatura

Criado 10 de outubro de 2009
Ultima resposta 10 de out. de 2009
Respostas 9
Participantes 3