2015-02-14 2 views
-2

ошибка в простой программе факторного

//WAP to find the factorial of a number using recursion. 
 

 
import java.io.*; 
 

 
class Factorial 
 
{ 
 
     public static int Fact(int n) 
 
     { 
 
     if(n!=1) 
 
      return n*Fact(n-1); 
 
     } 
 
     public static void main(String []args) 
 
     { 
 
      int n; 
 
      BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
 
      System.out.println("Enter a number to find its factorial="); 
 
      String s=br.readLine(); 
 
      n=Integer.parseInt(s); 
 
      n=Fact(n); 
 
      System.out.print("The Factorial is "+n); 
 
     } 
 
}

какие ошибки я делаю здесь? он показывает 2 ошибки на компиляцию 1. Заявление отсутствует 2. незарегистрированного исключения должны быть пойманной или объявленным ...

+0

** 1. ** Что вы вернетесь, если 'если (п! = 1)' это не так? ** 2. ** 'parseInt' может бросать' NumberFormatException' – Maroun

+0

Это нормально, если вы можете добавить сообщения и пометить строку, откуда они взяты. – Jens

+0

Я голосую, чтобы закрыть этот вопрос не по теме, потому что это тестовый драйвер. –

ответ

1

Вы хотите, чтобы поймать IOException, что может быть выброшено методом readLine(), и вы должны вернуть то, что когда n==1. Только return 1; в этом случае (так как факториал 1 равен 1). Так что это то, что вы хотите:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class Factorial { 
    public static int Fact(int n) { 
     if (n != 1) 
      return n * Fact(n - 1); 
     return 1; 
    } 

    public static void main(String[] args) { 
     try { 
      int n; 
      BufferedReader br = new BufferedReader(new InputStreamReader(
        System.in)); 
      System.out.println("Enter a number to find its factorial="); 
      String s = br.readLine(); 
      n = Integer.parseInt(s); 
      n = Fact(n); 
      System.out.print("The Factorial is " + n); 
     } catch (IOException e) { 
      // bla 
     } 
    } 
} 
0

Два думает:

Первое: если п == 1 не возвращают значение в'public статического Int Факт (Int N) `

public static int Fact(int n) 
{ 
    if(n!=1) 
     return n*Fact(n-1); 
    return 1; 
} 

Второе: br.readLine(); выбрасывает исключение IOException. Это должно быть объявлено в заголовке метода или оно должно быть уловлено.

public static void main(String []args) throws IOException 
{ 
     int n; 
     BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("Enter a number to find its factorial="); 
     String s=br.readLine(); 
     n=Integer.parseInt(s); 
     n=Fact(n); 
     System.out.print("The Factorial is "+n); 
    } 

}

Смежные вопросы