Tenho uma dúvida no código fonte abaixo de um execício da facul:
import javax.swing.*;
class cap08ex02_para
{ //Início da classe cap08ex02_enquanto.
public static void main (String noArguments[])
{ // Início do método void main.
int i; //Variável para o núm. inteiro a ser calculado seu fatorial.
int f; //Variável para o o resultado do cálculo do fatorial.
i = Integer.parseInt (JOptionPane.showInputDialog("Digite aqui um número inteiro para o cálculo do seu fatorial"));
for (i=i;i>=1;i--)
{
f = i*(i-1);
}
JOptionPane.showMessageDialog(null,"O fatorial do número digitado é: "+f);
System.exit(0);
}
}
Com esse código gero um resultado do fatorial do número que o usuário digitar na tela de entrada de dados. Mas acusa que a variável f não pôde ser inicializada. Ou seja, o processamento dentro da estrutura for não está deixando a variável f sair do bloco com o valor do resultado.
Agradeço a oportunidade de iniciar minha participação neste fórum.
Ainda bem que apareceu esse erro. Mesmo se o compilador não reclamasse, o seu código não ia dar o resultado correto.
int n; // Variável para o núm. inteiro a ser calculado seu fatorial.
int f = 1; // Variável para o o resultado do cálculo do fatorial.
n = Integer.parseInt (JOptionPane.showInputDialog("Digite aqui um número inteiro para o cálculo do seu fatorial"));
for (int i = 1; i <= n; ++i) {
f = f * i;
}
JOptionPane.showMessageDialog(null,"O fatorial do número digitado é: "+f);
Mais uma coisa: não economize variáveis. Você não ganha nada com isso e seu programa também não fica mais rápido com isso. Em particular, não faça as variáveis “mudarem de personalidade” durante o funcionamento de seu programa.
Galuco tudo bom? Bom o que esta acontecendo é o seguinte:
Toda variavel “local” ou toda variavel que vc declara dentro de um método vc e obrigado a inicializa-la antes de usa-la ok?
pra resolver so inicializa ela no seu codigo assim:
[code]import javax.swing.;
class cap08ex02_para
{ //Início da classe cap08ex02_enquanto.
public static void main (String noArguments[])
{ // Início do método void main.
int i; //Variável para o núm. inteiro a ser calculado seu fatorial.
int f = 0; //Variável para o o resultado do cálculo do fatorial.
i = Integer.parseInt (JOptionPane.showInputDialog(“Digite aqui um número inteiro para o cálculo do seu fatorial”));
for (i=i;i>=1;i–)
{
f = i(i-1);
}
JOptionPane.showMessageDialog(null,"O fatorial do número digitado é: "+f);
System.exit(0);
}
}
Também sou iniciante, e estava vendo seu código tentando resolver o problema, ainda não resolvi 100%…rsrsrssrrsrs…mas tenho uma idéia do que pode estar errado, acredito que as variáveis deveriam ser inicializadas com 0, já que o usuário irá inserir o numero para o cálculo, se eu estiver falando besteira me desculpe, mas como disse, também to aprendendo.
import javax.swing.*;
class cap08ex02_para { //Início da classe cap08ex02_enquanto.
public static void main (String noArguments[]) { // Início do método void main.
int i; //Variável para o núm. inteiro a ser calculado seu fatorial.
int f; //Variável para o o resultado do cálculo do fatorial.
i = Integer.parseInt (JOptionPane.showInputDialog("Digite aqui um número inteiro para o cálculo do seu fatorial"));
for (i=i;i>=1;i--) {
f = i*(i-1);
JOptionPane.showMessageDialog(null,"O fatorial do número digitado é: "+f);
}
System.exit(0);
}
}
Seu código modificado
vê aí se era isso !!
tente melhorar sua identação
Toda variavel declarada dentro de um metodo deve ser inicializada.
Teste o codigo:
import javax.swing.*;
class cap08ex02_para { //Início da classe cap08ex02_enquanto.
public static void main (String noArguments[]) { // Início do método void main.
int i = Integer.parseInt (JOptionPane.showInputDialog("Digite aqui um número inteiro para o cálculo do seu fatorial")); //Variável para o núm. inteiro a ser calculado seu fatorial.
int f=0; //Variável para o o resultado do cálculo do fatorial.
for (i=i;i>=1;i--) {
f = i*(i-1);
}
JOptionPane.showMessageDialog(null,"O fatorial do número digitado é: "+f);
System.exit(0);
}
}
Pessoal, muito obrigado pela ajuda. Mas ainda não consegui atingir o objetivo. Se inicializo a variável f antes do bloco de processamento do for, ele me traz zero como resultado. Ou seja, processa o fatorial, mas não exibe o valor do fatorial na variável f como saída de resultados.
Se ponho a saída de resultados dentro do processamento do for, me é exibida a cada vez que processa, processando o fatorial fragmentado.
Por exemplo, se quero o fatorial de 5, a lógica é 54=20, 203=60, 602=120, 1201=120. O valor final de f deve ser 120. E esse valor vem como zero se inicio a variável f como zero. E vem fragmentado se uso a saída de resultados antes de terminar o processamento dentro da estrutura de repetição do for.
Pessoal, desculpa a demora em responder. Mas estou sem internet em casa.
Obrigado a ajuda de todos. Consegui ajustar a lógica e as sintaxes certas.
Vejam abaixo como ficou o código:
import javax.swing.*;
class cap08ex02_para
{ //Início da classe cap08ex02_para.
public static void main (String noArguments[])
{ // Início do método void main.
int y; //contador da estrutura de repetição
int n; //Variável para o núm. inteiro a ser calculado seu fatorial.
int f=1; //Variável para o o resultado do cálculo do fatorial.
n = Integer.parseInt (JOptionPane.showInputDialog("Digite aqui um número inteiro para o cálculo do seu fatorial"));
for (y=n;y>1;y--)
{
f = f*y;
}
JOptionPane.showMessageDialog(null,"O fatorial do número digitado é: " + f);
System.exit(0);
}
}