Fatorial

4 respostas
T

Ola,
Esse é um exemplo de programa q tem num livro que estou vendo
O programa compilo mas na hora de colocar o valor dah ‘ArrayIndexOutOfBonds’,o q significa isso?
mas isso nao eh minha maior preocupação,tipo… eu to venu 2 programas iguais ae embaixo
o que tah no public static void main e o outro metodo factorial que funciona normal sem o public static void main,
porque a necessidade desses dois metodos juntos?

public class Factorial {                   // Define a class
   public static void main(String[] args) { // The program starts here
      int input = Integer.parseInt(args[0]); // Get the user's input
     double result = factorial(input);      // Compute the factorial
     System.out.println(result);            // Print out the result
    }                                        // The main() method ends here
 
   public static double factorial(int x) {  // This method computes x!
     if (x < 0)                             // Check for bad input
       return 0.0;                          // If bad, return 0
     double fact = 1.0;                     // Begin with an initial value
     while(x > 1) {                         // Loop until x equals 1
      fact = fact * x;                     // Multiply by x each time
       x = x - 1;                           // And then decrement x
     }                                      // Jump back to start of loop
     return fact;                           // Return the result
   }                                        // factorial() ends here
 }                                          // The class ends here

Vlew

4 Respostas

ViniGodoy

Você precisa rodar seu programa com:

java Factorial 10

Onde o número que o fatorial calculado será 10.

O IndexOutOfBoundsException ocorre pq, sem esse número, vc tentará ler a posição 0 do que foi escrito no console (args[0]). Como args está vazio, vc não tem um índice 0 para pegar.

Note que a função de fatorial é chamada de dentro da função main. Por isso, é necessária que as duas estejam juntas. É uma boa prática de código separar o seu programa em funções curtas e coesas, e não escrever tudo num espaguete só.

T

java fatorial 10 aonde?
qualque numero aqui da aquele erro , "int input = Integer.parseInt(args[0]); "
Mas não entendo como esses dois métodos se relacionam, o método que ocorre a execução do programa eh soh no
public static double factorial(int x)
q ae eu vo inserir o x e ele vai calcular…

Valder_Olmo_Correa

Como o ViniGodoy disse, você deve executar esse comando quando for executar o seu programa.
Você poderia estudar como se faz entrada de dados utilizando a classe Scanner ou Buffered Reader, assim evitaria problemas na hora de entrar com os dados do programa. Aconselho usar Scanner.

Qualquer dúvida, poste aí !

fbmanhani

Se quiser apenas ver se o programa funciona …faça este input:

int input = Integer.parseInt(args[0]);

Receber diretamente um valor que você queira testar. Ex:

int input = 10;

Abrax.

Criado 6 de outubro de 2008
Ultima resposta 7 de out. de 2008
Respostas 4
Participantes 4