Tabuada com vetor

9 respostas
D

//Crie um programa com 1 vetor contendo os números de 1 á 10. Solicite ao usuário um numero e gere a tabuada do numero digitado,
multiplicando pelos valores que estão dentro do vetor. Ao finalizar, mostrar o resultado em um JOptionPane.showMessageDialog e
perguntar se o mesmo gostaria de fazer a tabuada de mais algum numero. Se sim gerar a tabuada novamente, se não finalizar o programa.

OBS: quando peço para digitar novamente caso deseja , apos digitar outro numero ele não executa e finaliza

public static void main(String[] args) {
    String entrada = JOptionPane.showInputDialog("digite o numero");
        int vl = Integer.parseInt(entrada); 
        int[] tab= new int[11];
        
        for(int i = 1; i<tab.length;i++){
            tab[i] = i;
        JOptionPane.showMessageDialog(null, vl+"x" + i+"="+ (vl*tab[i]));
           
        }
        
        JOptionPane.showInputDialog("Deseja efetuar a tabuada novamente");
        String sim = "sim";
     if (sim.equals(sim)){
              JOptionPane.showInputDialog ("digite outro numero");
        
         
         
     } 
     else  {
         System.out.println("tabuada cancelada"); 
     }
        }       
        
}

9 Respostas

sowyer

Sim… e qual o problema chefe ?

gustavocoolt

Pequeno erro de logica…

~import javax.swing.JOptionPane;


public class Tabuada {
	public static void main(String[] args) { 
		Integer num = 1;

		while(num == 1){
			String entrada = JOptionPane.showInputDialog("digite o numero");  
			int vl = Integer.parseInt(entrada);   
			int[] tab= new int[11];  

			for(int i = 1; i<tab.length;i++){  
				tab[i] = i;  
				JOptionPane.showMessageDialog(null, vl+"x" + i+"="+ (vl*tab[i]));  

			}  

			String status = JOptionPane.showInputDialog("Deseja efetuar a tabuada novamente");
			if ("sim".equals(status) || "SIM".equals(status)){  
				num = 1;
			}   
			else  {  
				num = 0; 
			}  
		} 
	}
}
sowyer

Bom… já que já foi dito … eu faria assim:

import javax.swing.JOptionPane;

public class Tabuada {

	public static void main(String[] args) {
		int[] tabuada = new int[10];
		String resposta = "nao";

		int numeroACalcular;
		do {
			StringBuilder calculoEfetuado = new StringBuilder();
			numeroACalcular = Integer.parseInt(JOptionPane.showInputDialog("Digite um numero a ser calculado:"));
			calculoEfetuado.append("Calculando a Tabuada do [").append(numeroACalcular).append("]:\n");
			
			// Laço que inicializa o array para que o mesmo atenda ao requisito...
			for(int i=0; i<tabuada.length; i++) {
				tabuada[i] = (i+1);
                                // Usei uma instancia de StringBuilder pra evitar criar muitas Strings e talz.. 
                                // mas ficou "feio", porém, com uma performance maior... 
                                // Alem do que, o enunciado do problema informa pra mostrar SOMENTE no fim da execução ... 
				calculoEfetuado.append(numeroACalcular).append("x").append(tabuada[i]).append("=").append(numeroACalcular * tabuada[i]).append("\n");
			}
			
			JOptionPane.showMessageDialog(null, calculoEfetuado);
			
			resposta = JOptionPane.showInputDialog("Você deseja realizar algum novo calculo ?");
			
		} while (resposta.equalsIgnoreCase("sim"));
	}
}

Esse é a versão usando concatenação escrota de Strings …

import javax.swing.JOptionPane;

public class Tabuada {

	public static void main(String[] args) {
		int[] tabuada = new int[10];
		String resposta = "nao";

		int numeroACalcular;
		do {
			String calculoEfetuado;
			numeroACalcular = Integer.parseInt(JOptionPane.showInputDialog("Digite um numero a ser calculado:"));
			calculoEfetuado = "Calculando a Tabuada do [" + numeroACalcular + "]:\n";
			
			// Laço que inicializa o array para que o mesmo atenda ao requisito...
			for(int i=0; i<tabuada.length; i++) {
				tabuada[i] = (i+1);
				calculoEfetuado = calculoEfetuado + numeroACalcular + "x" + tabuada[i] + "=" + (numeroACalcular * tabuada[i]) + "\n";
			}
			
			JOptionPane.showMessageDialog(null, calculoEfetuado);
			
			resposta = JOptionPane.showInputDialog("Você deseja realizar algum novo calculo ?");
			
		} while (resposta.equalsIgnoreCase("sim"));
	}
}
charleston10

Segue ai…
http://javaaberto.blogspot.com.br/2012/11/java-jr-parte-xiv-parametros-com-retorno.html

charleston10

Tem várias maneiras de se fazer repetir um bloco de código, desde While, Do While, For, GoTo, sei la tanto faz…
Os exemplos acima, estao valendo… caso queira saber um pouco mais, de uma estuda nessas estruturas acima…

;]

pmlm

Pode ser uma questão de interpretação do texto mas acho que nenhuma das soluções apresentadas responde corretamente à questão.

//Crie um programa com 1 vetor contendo os números de 1 á 10.
        int vetor[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        int continuar;

        do {
            //Solicite ao usuário um numero
            int numero = Integer.parseInt(JOptionPane.showInputDialog("Digite um numero para fazer a tabuada:"));

            //e gere a tabuada do numero digitado, multiplicando pelos valores que estão dentro do vetor.
            StringBuilder resposta = new StringBuilder();
            for (int x : vetor) {
                resposta.append(numero).append(" x ").append(x).append(" = ").append(numero * x).append("\n");
            }

            //Ao finalizar, mostrar o resultado em um JOptionPane.showMessageDialog
            JOptionPane.showMessageDialog(null, resposta);

            // e perguntar se o mesmo gostaria de fazer a tabuada de mais algum numero.
            continuar = JOptionPane.showConfirmDialog(null, "Gostaria de fazer a tabuada para mais algum número?", "Resposta", JOptionPane.YES_NO_OPTION);

            // Se sim gerar a tabuada novamente, se não finalizar o programa.
        } while (continuar == JOptionPane.YES_OPTION);
sowyer
pmlm:
Pode ser uma questão de interpretação do texto mas acho que nenhuma das soluções apresentadas responde corretamente à questão.
//Crie um programa com 1 vetor contendo os números de 1 á 10.
        int vetor[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        int continuar;

        do {
            //Solicite ao usuário um numero
            int numero = Integer.parseInt(JOptionPane.showInputDialog("Digite um numero para fazer a tabuada:"));

            //e gere a tabuada do numero digitado, multiplicando pelos valores que estão dentro do vetor.
            StringBuilder resposta = new StringBuilder();
            for (int x : vetor) {
                resposta.append(numero).append(" x ").append(x).append(" = ").append(numero * x).append("\n");
            }

            //Ao finalizar, mostrar o resultado em um JOptionPane.showMessageDialog
            JOptionPane.showMessageDialog(null, resposta);

            // e perguntar se o mesmo gostaria de fazer a tabuada de mais algum numero.
            continuar = JOptionPane.showConfirmDialog(null, "Gostaria de fazer a tabuada para mais algum número?", "Resposta", JOptionPane.YES_NO_OPTION);

            // Se sim gerar a tabuada novamente, se não finalizar o programa.
        } while (continuar == JOptionPane.YES_OPTION);

Vc chama de "não responder corretamente" o fato de não haver uma inicialização explicita do array com os 10 números ? Pq foi isso que a sua solução diferiu ( basicamente ).

não acredito que o fato de inicializa-lo explicitamente torne a versão anterior errada.

Há.. tb teve a utilização da constante ... o que deixou apenas mais conciso o código... mas não "mais certo".

PS: Gostei da sua versão... tá mais limpa!

pmlm

sowyer:

Vc chama de “não responder corretamente” o fato de não haver uma inicialização explicita do array com os 10 números ?

Esse é um ponto, outro é que uma das soluções não usava o vetor para fazer os cálculos.

Não digo que seja errada, mas pode ser aquele fator que faz a diferença. Para que preencher o array n vezes, se o que queremos é um único array que não muda independentemente do número de vezes que desejarmos continuar a introduzir números?

D

muito obrigado Corrigi meu programa com base nas suas dicas , agradeço a atenção

gustavocoolt:
Pequeno erro de logica..
~import javax.swing.JOptionPane;


public class Tabuada {
	public static void main(String[] args) { 
		Integer num = 1;

		while(num == 1){
			String entrada = JOptionPane.showInputDialog("digite o numero");  
			int vl = Integer.parseInt(entrada);   
			int[] tab= new int[11];  

			for(int i = 1; i<tab.length;i++){  
				tab[i] = i;  
				JOptionPane.showMessageDialog(null, vl+"x" + i+"="+ (vl*tab[i]));  

			}  

			String status = JOptionPane.showInputDialog("Deseja efetuar a tabuada novamente");
			if ("sim".equals(status) || "SIM".equals(status)){  
				num = 1;
			}   
			else  {  
				num = 0; 
			}  
		} 
	}
}
Criado 12 de novembro de 2012
Ultima resposta 12 de nov. de 2012
Respostas 9
Participantes 5