Fico feliz por encontrar um canal com um conteúdo tão bom. Obrigado Guanabara, pela dedicação, esforço e por compartilhar conhecimento, vai ajudar não somente a mim, mas muitos que estão interessados em aprender esta maravilhosa linguagem, que é bastante presente no nosso dia a dia e quase não nos damos conta :)
O código é visivelmente simples mas 'enxergá-lo', chegar a esse raciocínio lógico, é que faz a diferença para ser um bom desenvolvedor. Para alguns isso é natural para outros tem que praticar!
Outra solução, com o desafio proposto: int num = Integer.parseInt(txtNum.getValue().toString()); int i = 0; // Inicializa o índice com zero int r = 1; String frase = num + "!= "; // Todos os indíces ex: 3 2 1 String mult = " X "; // Inclui o x entre os Índices if(num == 0) { // Número sendo zero teremos != 1 frase += 1; } while(i < num) { r += (i*r); // Encontra o fatorial frase += (num - i)+mult; // Todos os números que levam ao fatorial i++; } lblFrase.setText(frase); lblFatorial.setText(Integer.toString(r));
Forma de mostar o detalhe do calculo de fatorial na tela: int n = Integer.parseInt(txtNum.getValue().toString()); int f = 1; int c = n; //mostrar detelhe do calculo no resultado: String detalhe= "";
Ótima aula, como sempre professor! Essa foi a minha resolução: private void jsValorStateChanged(javax.swing.event.ChangeEvent evt) { int num = Integer.parseInt(jsValor.getValue().toString()); int resultado =1; if (num>1) { for (int i = num; i >= 1; i--) { resultado = resultado * i; } } lblResultado.setText(Integer.toString(resultado)); }
Ao invés de fazer como o Guanabara: int n = Integer.parseInt(txtN.getValue().toString()); eu fiz: int n = (int) txtN.getValue().toString(); e deu certo =D
Leonardo Teixeira O meu ficou diferente, mas funfou direitinho tbm. private void spnNStateChanged(javax.swing.event.ChangeEvent evt) { int n = (int) spnN.getValue(); int s; s = n - 1; while (s > 1){ n *= s; s--; } lblFat.setText(Integer.toString(n)); }
*Código do exercício adicional. Basta adaptar as suas variáveis* private void cntrlNumeroStateChanged(javax.swing.event.ChangeEvent evt) { int num = Integer.parseInt(cntrlNumero.getValue().toString()); int resultado = 1; String s = ""; while(num > 0){ if(num!=1){ s += num+" x "; } else{ s += num; } resultado*= num; num--; } lblResultado.setText(Integer.toString(resultado)); lblMult.setText(s); lblEu.setVisible(true); }
+Luciano Alves Depende do que você julgar mais necessário. O JavaFX trouxe várias novidades, Suporta CSS, GUI mais sofisticada, UI desenvolvida em FXML. Já o Swing é mais antigo e robusto. A tendência tem mostrado que os dois continuarão existindo em paralelo, e não um substituirá o outro, apesar das novidades ainda não estão desenvolvendo muita coisa em JavaFX, e seu suporte continua extremamente menor do que o do Swing.
Fiz de uma maneira bem mais complicada, do que o Guanabara fez ksks, mas aparentemente deu certo também: //FATORIAL DE 0 A 12: int f = Integer.parseInt(txtN.getValue().toString()); int s = f; s--; if (s < 0) { f = 1; lblF.setText(Integer.toString(f)); } else { while (s != 0) { f = f * s; s--; } lblF.setText(Integer.toString(f)); }
Fiz assim pra mostrar o calculo feito: Sem o if mostrava o *0 tbm. int n= (int)txtNum.getValue(); int f = 1; String calc=String.format(""+n); while(n>=1){ f*=n; --n; if(n>=1){ calc+="*"+n; } } lblFat.setText(calc+" = "+f);
Segue resolução do exercício de Java #11 deixado como tarefa pelo professor Guanabara. NOTA: Aproveitando o exercício já feito em aula, eu Inserir mais uma JLabe e chamei de lblFat1, local onde serão escritos as String com os valores da multiplicação do fatorial. Também utilizei um vetor para armazenar as Strings de forma sequencial e criei um objeto /* StringBuilder str = new StringBuilder( ); */ num loop for com o método /* str.append(vetor[i]); */. Funcionou perfeitamente, veja abaixo a porção da rotina de execução. private void txtNStateChanged(javax.swing.event.ChangeEvent evt) { // TODO add your handling code here: int n = Integer.parseInt(txtN.getValue().toString()); int f = 1; int c = n; int i; int j = c; String[ ] vetor = new String[13]; for(i = 0; i =1){ f *= c; c--; } StringBuilder str = new StringBuilder(); for (i = j; i >= 0; i--){ str.append(vetor[i]); } lblFat1.setText(str.toString()); //ex. 5! = 5 x 4 x 3 x 2 x 1 lblFat.setText(Integer.toString(f)); }
Graças a Deus que consegui fazer o desafio, pq meu orgulho não me deixaria passar pra próxima aula: int n = (int) spi01.getValue(); lbl03.setText(Integer.toString(n)); int y = n; int z=1; String v = ""; while (n>1) { z = z*n; // posso fazer assim z*= n v += "*"+n+" "; n= n-1; // n-=1
Esse aqui rodou liso, código enxuto e na telinha do swing. É só substituir o código que ele fez. Quem gostar deixa o joinha! int n = Integer.parseInt(txtN.getValue().toString()); int f = 1; int c = n; String v = ""; while (c>=1){ if (c!=1){ v += Integer.toString(c) + " x "; }else{ v += Integer.toString(c); } f *= c; c--; } lblFat.setText(Integer.toString(f)); lblCalc.setText(v); // criar um label "lblCalc" na tela e aumentar pra caber o texto
fiz o exercicio proposto com o laço " for" e ficou assim : int resu =(Integer.parseInt(spinnVal.getValue().toString())); int fatorial = 1; for ( int c= 1; c
Resposta do desafio: showFormula.setVisible(true); int n = Integer.parseInt(txtN.getValue().toString()); int f = 1; int c = n; String conta = ""; while (c >= 1) { f *= c; c--; conta += (c + 1) + " x ";
Põem todos os videos no site, aqui no TH-cam rola muita propaganda, e faz com que tenha que carregar o video novamente depois da propaganda, (carregar novamente o video que ja tinha carregado que seria depois da propaganda)
Mais uma bela aula, professor! Entretanto, não estou conseguindo fazer a parte "adicional", de mostrar os números na sequência também. Terei que criar uma nova variável? Alguém pode me ajudar?
Ana Carolina Hernandes Tenta assim: int n = .... int f = 1; int c = n; String s = c; while(c>=1){ f *= c; c--; s += " x "+c"; } ai vc poe a String s onde quiser.
+Ana Carolina Hernandes (Anne) Sim, precisa de uma nova variável para armazenar o índice a cada loop. int num = Integer.parseInt(txtNum.getValue().toString()); int i = 0; // Inicializa o índice com zero int r = 1; String frase = num + "!= "; // Todos os indíces ex: 3 2 1 String mult = " X "; // Inclui o x entre os Índices if(num == 0) { // Número sendo zero teremos != 1 frase += 1; } while(i < num) { r += (i*r); // Encontra o fatorial frase += (num - i)+mult; // Todos os números que levam ao fatorial i++; } lblFrase.setText(frase); lblFatorial.setText(Integer.toString(r));
No começo, eu confesso que não estava entendendo direito a IDE, e a linguagem. Caí de paraquedas do curso de algoritmos do visualg aqui. Mas eu fui fuçando e fui entendendo, vi que cada coisa que eu "configurava" era apenas uma forma gráfica de escrever um código.
Exercicio feito int numero = Integer.parseInt(spNum.getValue().toString()); int fatorial = 1; String m = " "; for(int c = numero ; c > 1 ; c--){ fat *= c; m += c + " x "; } lblX.setText(m + "1 ="); lblRes.setText(Integer.toString(fatorial)); panTela.setVisible(true);
Guanabara eu conseguir fazer o exercício adicional nos qual você pediu para fazer só que eu gostaria de conferi-se para saber se esta ok ou se tem outra forma mais curta para tratar, gostaria saber onde eu posso enviar o código fonte para mostrar a funcionalidade do meu programa
Boa tarde. Já visualizei todos os vídeos do Java no Yotube, Mas no site só vai até o décimo, não consigo abrir os demais. Para gerar o certificado. Respeitosamente. Andre Marcelo.
no exercicio fiz uma gambiarra que nem sei oq aconteceu, mas ta funcionando: int n = Integer.parseInt(txtFator.getValue().toString()); int f = 1; int c = n; int cf = 0; // Contador Fatorial String cft = ""; // Contador FaTorial while (c>=1) { f *= c; c--; cft += n - c + " x "; // Contador Fatorial } lblFator.setText(Integer.toString(f)); lblMulti.setText((cft + " = " + f)); // Mostra o contador fatorial em sequencia multiplicando
int valorPassado = (int) txtN.getValue(); int fatorial = 1; //se for 0, vai dar problema por que 0*x= 0 int contador = valorPassado; while (contador >= 1){ //o valor passado foi 5, enquanto 5 for maior ou igual a 1 faça fatorial = fatorial * contador; //fatorial que vale 1 vai receber fatorial vezes contador = 5, 1*5=5; contador = contador - 1; // após fazer a multiplicação de (fatorial = 1)*(contador = 5)=(resultado = 5) ele vai tirar 1 do 5(contador) e na próxima repetivar vai ficar 5*4 e assim vai. } lblFat.setText(Integer.toString(fatorial));
Olá Guanabara! Estou tentando fazer o exemplo deste vídeo mas não encontrei na paleta "Controles Swing " o componente "controle giratório - JSpinner". Como adiciona-lo?
Pensei que o compilador não aceitaria porque existiria a possibilidade de haver estouro. Não sei se havia sido você que havia dito ou eu teria lido no Use a cabeça - Java.
como eu entendi errado eu so criei uma variavel que mostrava o fatoral de 5 lendo os comentarios eu entendi o que era pra ser feito realmente deu certo todos . vou tentar enxugar o maximo essa variavel pra fica de uma forma mais simples
Desafio aceito e feito: int n= Integer.parseInt(txtN.getValue().toString()); int f=1; int c=n; int numero=n; String multiplicacoes=""; while(numero!=0){//vai parar até chegar em 0 if(numero==n){//apenas no primeiro valor vai entrar nessa condição pois o primeiro valor //é sempre igual ao valor selecionado, cc=n; multiplicacoes+=" "+numero; }else{//Como os proximos valores são alterados, sempre entra nessa condição multiplicacoes+=" * "+numero; } numero--; //tira um a cada execução, modificando o cc para entrar na segunda condição }
Boa noite Prof Guanabara, a mais de 2 semanas deixaram de ser produzidas as aulas no site, só descobrir que tinha mais aulas depois que ousei entrar no youtube. Vai ser agora direto no youtube?
int f= 1; System.out.println("escreve o teu numero fatorial!!!"); int count =scanner.nextInt(); if(count=1){ f*=count; count--; System.out.println(f); }
} else System.out.println("o numero de factorial não pode ser superior a 12");
Pronto! int valor = Integer.parseInt(txtValor.getValue().toString()); int fatorial = 1; for(int i=valor; i>1; i--){ // Decrementa o valor até ser igual a 1 fatorial *= i; // Multiplica todos os valores até 1 } lblFatorial.setText(Integer.toString(fatorial)); }
EIIII, não fique mal, programação é assim mesmo. Tenta fazer dnv! Qualquer coisa, semana que vem postarei uma outra forma de fazer, que comigo deu certo hehe
while(true){ Scanner scanner = new Scanner(System.in); System.out.print("Digite um numero: "); int res = scanner.nextInt(); int f = 1; if (res == 0){ break; }
String calc = String.format(""+res); while(res>=1){ f *= res; --res;
Esse desafio deu trabalho e ainda saiu um pouco defeituoso // FATORIAL int num = Integer.parseInt(txtFat.getValue().toString()); int fat = (int) 1; String conta = ""; for (int c = num; c != 0; c--) { fat = fat * c; conta = conta + c +" x "; if (c == 1) { conta = conta + " = "; } } lblFat.setText(Integer.toString(fat)); lblConta.setText(conta);
16/03/2020 private void txtVStateChanged(javax.swing.event.ChangeEvent evt) { // Todos os comandos abaixo são atualizados cada vez que o controle é alterado int cont = (int) txtV.getValue(); //Recebe o valor do controle giratório String d = cont + ""; //String que vai escrever a formula do fatorial long valor = 1;//Valor long para poder subir alem de 12 while (cont > 0) { //repetição valor *= cont;//calcula o fatorial cont--; //faz o decremento de -1 if (cont == 0) continue; //apenas para não mostrar o 'x 0' d += " x " + cont;//Monta a String que vai mostrar a conta do fatorial } lblD.setText("" + d + " = " + valor + "");//Exibe a conta do fatorial lblR.setText(Long.toString(valor));//Mostra o resultado do Fatorial }
fiz o desafio proposto e deu certo... private void txtNumeroStateChanged(javax.swing.event.ChangeEvent evt) { // TODO add your handling code here: int numero = Integer.parseInt(txtNumero.getValue().toString()); int f = 1; int c = numero; String mult = " "; while (c >= 1) { f *= c; mult += Integer.toString(c)+ " * "; c--; lblMultiplicacao.setText(mult); } lblResultado.setText(Integer.toString(f)); }
consegui fazer usando 2 variaveis........ private void btnGiraStateChanged(javax.swing.event.ChangeEvent evt) { // TODO add your handling code here: int f = Integer.parseInt(btnGira.getValue().toString()); int c = f; while(c>1){ c--; f*=c; lblRes.setText(Integer.toString(f)); } }
O tipo int possui 4 bytes e o limite é de 2.147.483.647 . A partir do fatorial 16 ele ultrapassa esse valor, logo seu programa estoura!!!! No meu eu coloquei o tipo Long, com isso me deus umas casas a mais. int n = (int)spiN.getValue(); Long f = 1l; int c = n; String formula = ""; while(c>=1) { f *= c; formula += c+"!"; c--; } lblFat.setText((formula+1) +"="+ String.valueOf(f));
depois de muito bater a cabeça, eis que consegui: private void spinCountStateChanged(javax.swing.event.ChangeEvent evt) { // TODO add your handling code here: int n = Integer.parseInt(spinCount.getValue().toString()); int cc = n; int f = 1; while(cc>=1) { f *= cc; cc--; } lblRes.setText(Integer.toString(f)); }
o curso esta mto bom! porem os programas praticos feitos ate essa aula estao mto voltados para a matematica, ano, utilizando numeros inteiros. To sentindo falta de programas que involvam dinheiro para treinar variaveis do tipo Float. Vim do curso do Python e achei os programas la mais uteis no dia-a-dia.
Meu, aí eu fui olhar o meu código do visualg pra lembrar a fórmula do fatorial, e daí aiuehaeiueha ao invés de "cont--" eu tava colocando "cont = cont--", e ficava dando erro e eu sem saber onde aiuehiaeuheaih Segue código correto: private void spnValStateChanged(javax.swing.event.ChangeEvent evt) { int num = (int) spnVal.getValue(); int cont; int fator; cont = num; fator = 1; while(cont > 0){ fator = fator * cont; cont--; } lbFator.setText(Integer.toString(fator)); }
Resolvi teu desafio! package fatorial; import java.util.Scanner; public class Fatorial { public static void main(String[] args) { Scanner teclado = new Scanner(System.in); System.out.print("Fatorial: "); int n = teclado.nextInt(); int f = 1; int c = n; while (c >= 1) { if (c > 1) { System.out.print(c); } else { System.out.print(f); } if (c > 2) { System.out.print(" x "); } else if (c > 1) { System.out.print(" = "); } f *= c; c--; } System.out.format(" O fatorial de %d é %d", n, f);
Glêdson Eisenheim Acho que ele não vai responder. Isso pode ajudar, aquele dia eu fiz uma pergunta em uma comunidade no G+ olha plus.google.com/u/0/109665242745545615617/posts/8RbFRcdrNGp não sei se vai esclarecer sua dúvida porem da para você saber qual a diferença das duas. Usa o google translate se você não entender !
consegui concluir o desafio, ta ai minha solução. int n=Integer.parseInt(txtN.getValue().toString()); //n recebe o valor do controle giratorio. int f = 1; //fatorial String v,vf=""; //valores que escreveram 5x 4x... (so que sem o x). String x="X "; // X para pra colocar no final. int c = n; //c recebe o valor de n. while(c>=1){ //enquanto c maior ou igual a 1 repita ex: enquanto (12 >=1){ BLOCO} . f *=c; //f=f*c; v=(Integer.toString(c)); //transforma a variavel c inteira em String e coloca no v.; vf=vf+v+x; //junta o vf(valor Final) mais o v e o x fazendo ex: 5x 4x 3x... c--; //diminui o valor de c. } if(c==0 && f==1){ //Basicamente se o fatorial era 0 ele dava Erro E não mostrava nada na tela coloquei pra vf receber 1X pra não ficar vazio, pra resolver o problema. vf="1X"; } lblX.setText(vf); //mostra o o valor Vezes EX: 5X 4X 3X 2X 1X. lblFat.setText(Integer.toString(f));//mostra o valor de f(fatorial). }
SOLUÇÃO MAIS SIMPLES int numero = Integer.parseInt(txtN.getValue().toString()); int c = numero; String conta = String.format("", c); while (c > 1) { if (numero == c) { conta = conta + numero; } c--; conta = conta + "x" + c; numero = numero * c; } lblFat.setText(conta + "=" + numero);
Estude pelo nosso site e tire certificado de 40 horas. Curso completo em:
www.cursoemvideo.com/curso/java-basico/
Fico feliz por encontrar um canal com um conteúdo tão bom. Obrigado Guanabara, pela dedicação, esforço e por compartilhar conhecimento, vai ajudar não somente a mim, mas muitos que estão interessados em aprender esta maravilhosa linguagem, que é bastante presente no nosso dia a dia e quase não nos damos conta :)
O código é visivelmente simples mas 'enxergá-lo', chegar a esse raciocínio lógico, é que faz a diferença para ser um bom desenvolvedor. Para alguns isso é natural para outros tem que praticar!
Outra solução, com o desafio proposto:
int num = Integer.parseInt(txtNum.getValue().toString());
int i = 0; // Inicializa o índice com zero
int r = 1;
String frase = num + "!= "; // Todos os indíces ex: 3 2 1
String mult = " X "; // Inclui o x entre os Índices
if(num == 0) { // Número sendo zero teremos != 1
frase += 1;
}
while(i < num) {
r += (i*r); // Encontra o fatorial
frase += (num - i)+mult; // Todos os números que levam ao fatorial
i++;
}
lblFrase.setText(frase);
lblFatorial.setText(Integer.toString(r));
Forma de mostar o detalhe do calculo de fatorial na tela:
int n = Integer.parseInt(txtNum.getValue().toString());
int f = 1;
int c = n;
//mostrar detelhe do calculo no resultado:
String detalhe= "";
while (c>=1){
f *= c;
detalhe += c + "*" ;
c--;
//mostrar detelhe do calculo no resultado:
}
lblFatorial.setText(Integer.toString(f));
lblDetalhe.setText(detalhe);
}
:) Espero ter ajudado
Ótima aula, como sempre professor! Essa foi a minha resolução:
private void jsValorStateChanged(javax.swing.event.ChangeEvent evt) {
int num = Integer.parseInt(jsValor.getValue().toString());
int resultado =1;
if (num>1) {
for (int i = num; i >= 1; i--) {
resultado = resultado * i;
}
}
lblResultado.setText(Integer.toString(resultado));
}
Ao invés de fazer como o Guanabara:
int n = Integer.parseInt(txtN.getValue().toString());
eu fiz:
int n = (int) txtN.getValue().toString();
e deu certo =D
Sempre fazendo o programa antes do Guanabara :) depois só confiro se fiz certo
Leonardo Teixeira O meu ficou diferente, mas funfou direitinho tbm.
private void spnNStateChanged(javax.swing.event.ChangeEvent evt) {
int n = (int) spnN.getValue();
int s;
s = n - 1;
while (s > 1){
n *= s;
s--;
}
lblFat.setText(Integer.toString(n));
}
Ei, Vocês já estão trabalhando com java?
*Código do exercício adicional. Basta adaptar as suas variáveis*
private void cntrlNumeroStateChanged(javax.swing.event.ChangeEvent evt) {
int num = Integer.parseInt(cntrlNumero.getValue().toString());
int resultado = 1;
String s = "";
while(num > 0){
if(num!=1){
s += num+" x ";
}
else{
s += num;
}
resultado*= num;
num--;
}
lblResultado.setText(Integer.toString(resultado));
lblMult.setText(s);
lblEu.setVisible(true);
}
Muito boa aula/exercício como sempre, eu resolvi a "tarefa" com o switch case, até q ficou legal rsrsrsrsrs
Não vamos mais utilizar o JavaFX?
Afinal onde é melhor fazer interface gráfica o JavaFX ou o Swing?
+Luciano Alves Depende do que você julgar mais necessário.
O JavaFX trouxe várias novidades, Suporta CSS, GUI mais sofisticada, UI desenvolvida em FXML.
Já o Swing é mais antigo e robusto.
A tendência tem mostrado que os dois continuarão existindo em paralelo, e não um substituirá o outro, apesar das novidades ainda não estão desenvolvendo muita coisa em JavaFX, e seu suporte continua extremamente menor do que o do Swing.
Em questao de preferencia, sou mais o Swing, mais pratico.
Fiz de uma maneira bem mais complicada, do que o Guanabara fez ksks, mas aparentemente deu certo também:
//FATORIAL DE 0 A 12:
int f = Integer.parseInt(txtN.getValue().toString());
int s = f;
s--;
if (s < 0) {
f = 1;
lblF.setText(Integer.toString(f));
} else {
while (s != 0) {
f = f * s;
s--;
}
lblF.setText(Integer.toString(f));
}
Fiz assim pra mostrar o calculo feito: Sem o if mostrava o *0 tbm.
int n= (int)txtNum.getValue();
int f = 1;
String calc=String.format(""+n);
while(n>=1){
f*=n;
--n;
if(n>=1){
calc+="*"+n;
}
}
lblFat.setText(calc+" = "+f);
Segue resolução do exercício de Java #11 deixado como tarefa pelo professor Guanabara.
NOTA: Aproveitando o exercício já feito em aula, eu Inserir mais uma JLabe e chamei de lblFat1, local onde serão escritos as String com os valores da multiplicação do fatorial. Também utilizei um vetor para armazenar as Strings de forma sequencial e criei um objeto /* StringBuilder str = new StringBuilder( ); */ num loop for com o método /* str.append(vetor[i]); */. Funcionou perfeitamente, veja abaixo a porção da rotina de execução.
private void txtNStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
int n = Integer.parseInt(txtN.getValue().toString());
int f = 1;
int c = n;
int i;
int j = c;
String[ ] vetor = new String[13];
for(i = 0; i =1){
f *= c;
c--;
}
StringBuilder str = new StringBuilder();
for (i = j; i >= 0; i--){
str.append(vetor[i]);
}
lblFat1.setText(str.toString());
//ex. 5! = 5 x 4 x 3 x 2 x 1
lblFat.setText(Integer.toString(f));
}
Não está disponível no dropbox para baixar o conteúdo da Aula e Exercicios 11.
Graças a Deus que consegui fazer o desafio, pq meu orgulho não me deixaria passar pra próxima aula:
int n = (int) spi01.getValue();
lbl03.setText(Integer.toString(n));
int y = n;
int z=1;
String v = "";
while (n>1) {
z = z*n; // posso fazer assim z*= n
v += "*"+n+" ";
n= n-1; // n-=1
}
lbl04.setText((v));
lbl01.setText(Integer.toString(z));
Esse aqui rodou liso, código enxuto e na telinha do swing. É só substituir o código que ele fez. Quem gostar deixa o joinha!
int n = Integer.parseInt(txtN.getValue().toString());
int f = 1;
int c = n;
String v = "";
while (c>=1){
if (c!=1){
v += Integer.toString(c) + " x ";
}else{
v += Integer.toString(c);
}
f *= c;
c--;
}
lblFat.setText(Integer.toString(f));
lblCalc.setText(v); // criar um label "lblCalc" na tela e aumentar pra caber o texto
fiz o exercicio proposto com o laço " for" e ficou assim :
int resu =(Integer.parseInt(spinnVal.getValue().toString()));
int fatorial = 1;
for ( int c= 1; c
Excelente vídeo! Sempre deixo meu like e divulgo o canal!
Só um detalhe, esse concurso não é para oficiais, mas sim para praças (Sgt e Cb)! Valeu!
Resposta do desafio:
showFormula.setVisible(true);
int n = Integer.parseInt(txtN.getValue().toString());
int f = 1;
int c = n;
String conta = "";
while (c >= 1) {
f *= c;
c--;
conta += (c + 1) + " x ";
}
lblFat.setText(Integer.toString(f));
showFormula.setText(conta + "=");
Põem todos os videos no site, aqui no TH-cam rola muita propaganda, e faz com que tenha que carregar o video novamente depois da propaganda, (carregar novamente o video que ja tinha carregado que seria depois da propaganda)
Mais uma bela aula, professor! Entretanto, não estou conseguindo fazer a parte "adicional", de mostrar os números na sequência também. Terei que criar uma nova variável? Alguém pode me ajudar?
Ana Carolina Hernandes
Tenta assim:
int n = ....
int f = 1;
int c = n;
String s = c;
while(c>=1){
f *= c;
c--;
s += " x "+c";
}
ai vc poe a String s onde quiser.
+Ana Carolina Hernandes (Anne)
Sim, precisa de uma nova variável para armazenar o índice a cada loop.
int num = Integer.parseInt(txtNum.getValue().toString());
int i = 0; // Inicializa o índice com zero
int r = 1;
String frase = num + "!= "; // Todos os indíces ex: 3 2 1
String mult = " X "; // Inclui o x entre os Índices
if(num == 0) { // Número sendo zero teremos != 1
frase += 1;
}
while(i < num) {
r += (i*r); // Encontra o fatorial
frase += (num - i)+mult; // Todos os números que levam ao fatorial
i++;
}
lblFrase.setText(frase);
lblFatorial.setText(Integer.toString(r));
@@osguardioesoficial Esse funciona, mas tem que converter pra string.
No começo, eu confesso que não estava entendendo direito a IDE, e a linguagem. Caí de paraquedas do curso de algoritmos do visualg aqui. Mas eu fui fuçando e fui entendendo, vi que cada coisa que eu "configurava" era apenas uma forma gráfica de escrever um código.
Na minha faculdade, o professor chamava o teste de mesa de "chinesinho".
oxe
Gustavo na minha conta do curso em video só está aparecendo até a aula 10.
Exercicio feito
int numero = Integer.parseInt(spNum.getValue().toString());
int fatorial = 1;
String m = " ";
for(int c = numero ; c > 1 ; c--){
fat *= c;
m += c + " x ";
}
lblX.setText(m + "1 =");
lblRes.setText(Integer.toString(fatorial));
panTela.setVisible(true);
No site as aulas pararam na aula 10 de Java, por quê.
+Claudio Cassiano boa pergunta, a page dele não me responderam, e é muito ruim de estudar pelo youtube pra quem ta acostumado a estudar pelo site...
+Danillo Fernandes verdade... to até meio confuso, kkkkkkkkkkkkkk
Guanabara eu conseguir fazer o exercício adicional nos qual você pediu para fazer só que eu gostaria de conferi-se para saber se esta ok ou se tem outra forma mais curta para tratar, gostaria saber onde eu posso enviar o código fonte para mostrar a funcionalidade do meu programa
Boa tarde. Já visualizei todos os vídeos do Java no Yotube,
Mas no site só vai até o décimo, não consigo abrir os demais.
Para gerar o certificado.
Respeitosamente.
Andre Marcelo.
no exercicio fiz uma gambiarra que nem sei oq aconteceu, mas ta funcionando:
int n = Integer.parseInt(txtFator.getValue().toString());
int f = 1;
int c = n;
int cf = 0; // Contador Fatorial
String cft = ""; // Contador FaTorial
while (c>=1) {
f *= c;
c--;
cft += n - c + " x "; // Contador Fatorial
}
lblFator.setText(Integer.toString(f));
lblMulti.setText((cft + " = " + f)); // Mostra o contador fatorial em sequencia multiplicando
Boa Tarde. No site somente aparece as aulas até a número 10 e no dropbox só até a 8.
Aonde está os arquivos para baixar á partir da aula 9?
int valorPassado = (int) txtN.getValue();
int fatorial = 1; //se for 0, vai dar problema por que 0*x= 0
int contador = valorPassado;
while (contador >= 1){ //o valor passado foi 5, enquanto 5 for maior ou igual a 1 faça
fatorial = fatorial * contador; //fatorial que vale 1 vai receber fatorial vezes contador = 5, 1*5=5;
contador = contador - 1; // após fazer a multiplicação de (fatorial = 1)*(contador = 5)=(resultado = 5) ele vai tirar 1 do 5(contador) e na próxima repetivar vai ficar 5*4 e assim vai.
}
lblFat.setText(Integer.toString(fatorial));
Olá Guanabara!
Estou tentando fazer o exemplo deste vídeo mas não encontrei na paleta "Controles Swing " o componente "controle giratório - JSpinner". Como adiciona-lo?
Depois de um tempo voltando para o Curso de Java...
Segue meu código do desafio:
private void txtNStateChanged(javax.swing.event.ChangeEvent evt) {
int n = Integer.parseInt(txtN.getValue().toString());
int fatorial = 1;
int contador = n;
String sequencia = "";
while(contador >= 1){
fatorial = fatorial * contador;
if(contador == 1){
sequencia += contador;
}else{
sequencia += contador + "*";
}
contador--;
}
lblSequencia.setText(sequencia + " = " + fatorial);
lblFat.setText(Integer.toString(fatorial));
}
int num = Integer.parseInt(txtNum.getValue().toString());
int fatorial = 1;
int cont = num;
String contagem = "";
while(cont >= 1){
fatorial *= cont;
cont--;
contagem += (cont + 1) + " x ";
}
lblContagem.setText(contagem + " =");
lblFat.setText(Integer.toString(fatorial));
Vamos embora , praticar. Resolver, aprender, avançar.
Professor Guanabara, poderia fazer uma aula mostrando como exportar como .apk ? Tem planos de fazer aulas de desenvolvimento android? Abraço.
Pensei que o compilador não aceitaria porque existiria a possibilidade de haver estouro. Não sei se havia sido você que havia dito ou eu teria lido no Use a cabeça - Java.
como eu entendi errado eu so criei uma variavel que mostrava o fatoral de 5 lendo os comentarios eu entendi o que era pra ser feito realmente deu certo todos . vou tentar enxugar o maximo essa variavel pra fica de uma forma mais simples
Desafio aceito e feito:
int n= Integer.parseInt(txtN.getValue().toString());
int f=1;
int c=n;
int numero=n;
String multiplicacoes="";
while(numero!=0){//vai parar até chegar em 0
if(numero==n){//apenas no primeiro valor vai entrar nessa condição pois o primeiro valor
//é sempre igual ao valor selecionado, cc=n;
multiplicacoes+=" "+numero;
}else{//Como os proximos valores são alterados, sempre entra nessa condição
multiplicacoes+=" * "+numero;
}
numero--; //tira um a cada execução, modificando o cc para entrar na segunda condição
}
Gustavo muito show a aula parabéns. Cara me responde: quando começa o CURSO EM VIDEO PRO?
Daqui mais 5 anos ahahah
Boa noite Prof Guanabara, a mais de 2 semanas deixaram de ser produzidas as aulas no site, só descobrir que tinha mais aulas depois que ousei entrar no youtube. Vai ser agora direto no youtube?
Pena que não resolveu essa do fatorial no código usado no netbeans...errei tudo aqui
int f= 1;
System.out.println("escreve o teu numero fatorial!!!");
int count =scanner.nextInt();
if(count=1){
f*=count;
count--;
System.out.println(f);
}
} else
System.out.println("o numero de factorial não pode ser superior a 12");
showww de aula
14:25
Pronto!
int valor = Integer.parseInt(txtValor.getValue().toString());
int fatorial = 1;
for(int i=valor; i>1; i--){ // Decrementa o valor até ser igual a 1
fatorial *= i; // Multiplica todos os valores até 1
}
lblFatorial.setText(Integer.toString(fatorial));
}
Também usei o for.
No 13:40 eu não fiz isso, fiz isso aqui:
int n = (int)jSpinner2.getValue();
Tbm utilizei typecast
infezlimente não consegui resolver esse exercicio de fatorial não... fiquei até mal por isso.
EIIII, não fique mal, programação é assim mesmo.
Tenta fazer dnv! Qualquer coisa, semana que vem postarei uma outra forma de fazer, que comigo deu certo hehe
@@fernandabufon eu tô refazendo o curso de algoritmo dnv, já estou na aula 12 do curso em video.
int numero=1,resultado=1;
numero=Integer.parseInt(jsvalor.getValue().toString());
do{
resultado *= numero;
numero--;
}while(numero>=1);
lblresultado.setText(Integer.toString(resultado));
Eu fiz um pouco diferente do seu e deu certo aqui, curioso isso não é mesmo?
Eu também... Mas me responde uma coisa: o que acontece quando você chega no 16?
int fatorial = (int) jS1.getValue();
int fator = 1;
String construcao = "Construção: ";
while(fatorial >= 1){
construcao += ((fatorial - 1)>=1)?fatorial + ".":fatorial;
fator = fator * (fatorial);
fatorial--;
}
lblConstrucao.setText(construcao + " = " + fator);
lblResultado.setText(Integer.toString(fator));
while(true){
Scanner scanner = new Scanner(System.in);
System.out.print("Digite um numero: ");
int res = scanner.nextInt();
int f = 1;
if (res == 0){
break;
}
String calc = String.format(""+res);
while(res>=1){
f *= res;
--res;
if(res>=1){
calc += "*" + res;
}
}
System.out.println(calc + "=" + f);
}
Resolução do exercicio proposto:
private void txtNStateChanged(javax.swing.event.ChangeEvent evt) {
int n = Integer.parseInt(txtN.getValue().toString());
int cont = n;
int fat = 1;
String val = " ";
while (cont>=1) {
fat *= cont;
if (cont>1) {
val += cont + "*";
} else if (cont==1) {
val += cont;
}
cont--;
}
lblFat.setText(val + " = " + Integer.toString(fat));
}
Esse desafio deu trabalho e ainda saiu um pouco defeituoso
// FATORIAL
int num = Integer.parseInt(txtFat.getValue().toString());
int fat = (int) 1;
String conta = "";
for (int c = num; c != 0; c--) {
fat = fat * c;
conta = conta + c +" x ";
if (c == 1) {
conta = conta + " = ";
}
}
lblFat.setText(Integer.toString(fat));
lblConta.setText(conta);
16/03/2020
private void txtVStateChanged(javax.swing.event.ChangeEvent evt) {
// Todos os comandos abaixo são atualizados cada vez que o controle é alterado
int cont = (int) txtV.getValue(); //Recebe o valor do controle giratório
String d = cont + ""; //String que vai escrever a formula do fatorial
long valor = 1;//Valor long para poder subir alem de 12
while (cont > 0) { //repetição
valor *= cont;//calcula o fatorial
cont--; //faz o decremento de -1
if (cont == 0) continue; //apenas para não mostrar o 'x 0'
d += " x " + cont;//Monta a String que vai mostrar a conta do fatorial
}
lblD.setText("" + d + " = " + valor + "");//Exibe a conta do fatorial
lblR.setText(Long.toString(valor));//Mostra o resultado do Fatorial
}
fiz o desafio proposto e deu certo...
private void txtNumeroStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
int numero = Integer.parseInt(txtNumero.getValue().toString());
int f = 1;
int c = numero;
String mult = " ";
while (c >= 1) {
f *= c;
mult += Integer.toString(c)+ " * ";
c--;
lblMultiplicacao.setText(mult);
}
lblResultado.setText(Integer.toString(f));
}
consegui fazer usando 2 variaveis........
private void btnGiraStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
int f = Integer.parseInt(btnGira.getValue().toString());
int c = f;
while(c>1){
c--;
f*=c;
lblRes.setText(Integer.toString(f));
}
}
GUANABARAAAAA
Quando chego no número 17, aparece um número negativo. Pq isso acontece????
O tipo int possui 4 bytes e o limite é de 2.147.483.647
. A partir do fatorial 16 ele ultrapassa esse valor, logo seu programa estoura!!!!
No meu eu coloquei o tipo Long, com isso me deus umas casas a mais.
int n = (int)spiN.getValue();
Long f = 1l;
int c = n;
String formula = "";
while(c>=1) {
f *= c;
formula += c+"!";
c--;
}
lblFat.setText((formula+1) +"="+ String.valueOf(f));
depois de muito bater a cabeça, eis que consegui:
private void spinCountStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
int n = Integer.parseInt(spinCount.getValue().toString());
int cc = n;
int f = 1;
while(cc>=1) {
f *= cc;
cc--;
}
lblRes.setText(Integer.toString(f));
}
o curso esta mto bom! porem os programas praticos feitos ate essa aula estao mto voltados para a matematica, ano, utilizando numeros inteiros. To sentindo falta de programas que involvam dinheiro para treinar variaveis do tipo Float. Vim do curso do Python e achei os programas la mais uteis no dia-a-dia.
oi
👍
Meu, aí eu fui olhar o meu código do visualg pra lembrar a fórmula do fatorial, e daí aiuehaeiueha ao invés de "cont--" eu tava colocando "cont = cont--", e ficava dando erro e eu sem saber onde aiuehiaeuheaih
Segue código correto:
private void spnValStateChanged(javax.swing.event.ChangeEvent evt) {
int num = (int) spnVal.getValue();
int cont;
int fator;
cont = num;
fator = 1;
while(cont > 0){
fator = fator * cont;
cont--;
}
lbFator.setText(Integer.toString(fator));
}
Resolvi teu desafio!
package fatorial;
import java.util.Scanner;
public class Fatorial {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
System.out.print("Fatorial: ");
int n = teclado.nextInt();
int f = 1;
int c = n;
while (c >= 1) {
if (c > 1) {
System.out.print(c);
}
else {
System.out.print(f);
}
if (c > 2) {
System.out.print(" x ");
}
else if (c > 1) {
System.out.print(" = ");
}
f *= c;
c--;
}
System.out.format("
O fatorial de %d é %d", n, f);
}
}
eu criando um while com um break pra no final a resolução ser 3 linhas ;-;
Agora só falta responder minha pergunta sobre a aula 24 e a 25 de HTML 5 e por que não utilizou ONMOUSEOVER na aula 24 no lugar de ONMOUSEMOVE
Glêdson Eisenheim Nossa mano ainda ta esperando a resposta disso kkk
Glêdson Eisenheim Acho que ele não vai responder. Isso pode ajudar, aquele dia eu fiz uma pergunta em uma comunidade no G+ olha plus.google.com/u/0/109665242745545615617/posts/8RbFRcdrNGp não sei se vai esclarecer sua dúvida porem da para você saber qual a diferença das duas. Usa o google translate se você não entender !
Broono Louis Vou dar uma olhada. Valeu!!
consegui concluir o desafio, ta ai minha solução.
int n=Integer.parseInt(txtN.getValue().toString()); //n recebe o valor do controle giratorio.
int f = 1; //fatorial
String v,vf=""; //valores que escreveram 5x 4x... (so que sem o x).
String x="X "; // X para pra colocar no final.
int c = n; //c recebe o valor de n.
while(c>=1){ //enquanto c maior ou igual a 1 repita ex: enquanto (12 >=1){ BLOCO} .
f *=c; //f=f*c;
v=(Integer.toString(c)); //transforma a variavel c inteira em String e coloca no v.;
vf=vf+v+x; //junta o vf(valor Final) mais o v e o x fazendo ex: 5x 4x 3x...
c--; //diminui o valor de c.
}
if(c==0 && f==1){
//Basicamente se o fatorial era 0 ele dava Erro E não mostrava nada na tela coloquei pra vf receber 1X pra não ficar vazio, pra resolver o problema.
vf="1X";
}
lblX.setText(vf); //mostra o o valor Vezes EX: 5X 4X 3X 2X 1X.
lblFat.setText(Integer.toString(f));//mostra o valor de f(fatorial).
}
SOLUÇÃO MAIS SIMPLES
int numero = Integer.parseInt(txtN.getValue().toString());
int c = numero;
String conta = String.format("", c);
while (c > 1) {
if (numero == c) {
conta = conta + numero;
}
c--;
conta = conta + "x" + c;
numero = numero * c;
}
lblFat.setText(conta + "=" + numero);
Agora só falta responder minha pergunta sobre a aula 24 e a 25 de HTML 5 e por que não utilizou ONMOUSEOVER na aula 24 no lugar de ONMOUSEMOVE