//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
publicstaticvoidmain(String[]args){Stringentrada=JOptionPane.showInputDialog("digite o numero");intvl=Integer.parseInt(entrada);int[]tab=newint[11];for(inti=1;i<tab.length;i++){tab[i]=i;JOptionPane.showMessageDialog(null,vl+"x"+i+"="+(vl*tab[i]));}JOptionPane.showInputDialog("Deseja efetuar a tabuada novamente");Stringsim="sim";if(sim.equals(sim)){JOptionPane.showInputDialog("digite outro numero");}else{System.out.println("tabuada cancelada");}}}
~importjavax.swing.JOptionPane;publicclassTabuada{publicstaticvoidmain(String[]args){Integernum=1;while(num==1){Stringentrada=JOptionPane.showInputDialog("digite o numero");intvl=Integer.parseInt(entrada);int[]tab=newint[11];for(inti=1;i<tab.length;i++){tab[i]=i;JOptionPane.showMessageDialog(null,vl+"x"+i+"="+(vl*tab[i]));}Stringstatus=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:
importjavax.swing.JOptionPane;publicclassTabuada{publicstaticvoidmain(String[]args){int[]tabuada=newint[10];Stringresposta="nao";intnumeroACalcular;do{StringBuildercalculoEfetuado=newStringBuilder();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(inti=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 …
importjavax.swing.JOptionPane;publicclassTabuada{publicstaticvoidmain(String[]args){int[]tabuada=newint[10];Stringresposta="nao";intnumeroACalcular;do{StringcalculoEfetuado;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(inti=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"));}}
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.intvetor[]={1,2,3,4,5,6,7,8,9,10};intcontinuar;do{//Solicite ao usuário um numerointnumero=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.StringBuilderresposta=newStringBuilder();for(intx:vetor){resposta.append(numero).append(" x ").append(x).append(" = ").append(numero*x).append("\n");}//Ao finalizar, mostrar o resultado em um JOptionPane.showMessageDialogJOptionPane.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.intvetor[]={1,2,3,4,5,6,7,8,9,10};intcontinuar;do{//Solicite ao usuário um numerointnumero=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.StringBuilderresposta=newStringBuilder();for(intx:vetor){resposta.append(numero).append(" x ").append(x).append(" = ").append(numero*x).append("\n");}//Ao finalizar, mostrar o resultado em um JOptionPane.showMessageDialogJOptionPane.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
diucham
muito obrigado Corrigi meu programa com base nas suas dicas , agradeço a atenção
gustavocoolt:
Pequeno erro de logica..
~importjavax.swing.JOptionPane;publicclassTabuada{publicstaticvoidmain(String[]args){Integernum=1;while(num==1){Stringentrada=JOptionPane.showInputDialog("digite o numero");intvl=Integer.parseInt(entrada);int[]tab=newint[11];for(inti=1;i<tab.length;i++){tab[i]=i;JOptionPane.showMessageDialog(null,vl+"x"+i+"="+(vl*tab[i]));}Stringstatus=JOptionPane.showInputDialog("Deseja efetuar a tabuada novamente");if("sim".equals(status)||"SIM".equals(status)){num=1;}else{num=0;}}}}