Tabuada com vetor

//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"); 
     }
        }       
        
}

Sim… e qual o problema chefe ?

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; 
			}  
		} 
	}
}

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"));
	}
}

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

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…

;]

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);

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

[code]
//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);

[/code][/quote]

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!

[quote=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 ? [/quote]
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?

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

[quote=gustavocoolt]Pequeno erro de logica…

[code]
~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; 
		}  
	} 
}

}
[/code][/quote]