• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

André Sousa

Travar execução[Resolvido]

6 mensagens neste tópico

Boas. Fiz um programa para calcular a tabuada de números que estão a ser introduzidos pelo utilizador, no entanto o programa fica sempre a fazer a tabuada do primeiro numero introduzido, não me pedindo o proximo. Deixo aqui o codigo:

import javax.swing.JOptionPane;

public class Ex3 {
    public static int Tabuada(int x){
        int i;
        
        while(x!=0){
            for(i=1;i<=10;i++){
            
         System.out.println("A tabuada de"+x+"é igual a"+x+"x"+i+"="+x*i);
            
        }
            i=0;
        }
        return x;
          
    }
    public static void main(String[] args) {
       String s, t;
       int num, num2, k;
       t =JOptionPane.showInputDialog("Introduza um número");
       num =Integer.parseInt(t);
          
             while(num!=0){
                 k = Tabuada(num);
                 System.out.println(k);
                 s= JOptionPane.showInputDialog("Introduza outro número");
                 num = Integer.parseInt(s);
      
       
       
       }
   
    }
    
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E a tua pergunta é?

Convém sabermos o que queres ver respondido e não teres logo um bloco de código que não diz muito do teu problema ;)

Mas indo de encontro ao que acho ser a tua dúvida: no ciclo while tens a condição que diz, enquanto o x for diferente de zero executa, ora nunca mudas o valor de x, logo o programa está em ciclo à espera que o x seja zero.

Por outras palavras se analisarmos o ciclo while o que acontece é que o programa entra no ciclo uma vez, executa o for, onde calcula a tabuada, e no fim de executar o for, vai avaliar a condição do while, que continua verdadeira dado que o valor do x nunca mudou, por isso vai repetir o processo.

Altera a condição para algo que faça mais sentido, ou faz o x decrementar até chegar a zero. Precisas pensar melhor os ciclos que estás a usar.

Outros pontos, tem atenção à forma como escreves o código, recomendo a leitura das convenções de código oficiais de Java, podes consultar na wiki do P@P, por exemplo, http://wiki.portugal-a-programar.org/java:convencoes_linguagem. Neste caso os métodos não são escritos com maiúsculas.

Recomendo também que te habitues desde já a deixar de escrever os métodos como sendo estáticos.

Já agora, ao colocares código no fórum usa o sistema Geshi, que te permite mostrar código de forma mais fácil de ler.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta fazer a tabuada de 0 (zero)

A tabuada do zero é zero, o método devolve o valor de entrada logo isso até ia parecer que estava a funcionar ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelas recomendações Knitter. Consegui resolver o tal problema, retirando o ciclo while implementado no método ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A tabuada do zero é zero, o método devolve o valor de entrada logo isso até ia parecer que estava a funcionar :D

Mas a razão da minha mensagem era que o programa funciona quando calcula a tabuada de zero. Podia ser que, com essa informação, o André Sousa conseguisse descobrir por ele próprio porque é que as tabuadas de outros números não funcionavam ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora