2016-05-31 9 views
0
import java.util.Scanner; 

class Factorial { 
    public static void main(String a[]) throws Exception { 
    int i, f=1, n; 
    System.out.println("Enter a no"); 
    Scanner sc = new Scanner(System.in); 
    n = sc.nextInt(); 
    for (i = 1; i <= n; i++) { 
     f = f * i; 
    } 
    System.out.println("factorial is" + f); 
    } 
} 
+1

Bitte zeigen Sie Ihre Stacktrace –

Antwort

2

Scanner#nextInt thorws NoSuchElementException wenn die Eingabe erschöpft ist.

So entfernen Sie: - Überprüfen Sie die gültige Eingabe durch Scanner#hasNextInt, bevor Sie Scanner#nextInt anrufen.

if(sc.hasNextInt()){ 
    n=sc.nextInt(); 
} 

mehr Dokumentation Lesen Sie auf Scanner und NoSuchElementException.

+0

Da diese Eingabe von Standard kommt, gelten Sie nicht kommen. Gemäß den Javadocs 'Zum Beispiel erlaubt dieser Code einem Benutzer, eine Nummer von System.in zu lesen: Scanner sc = neuer Scanner (System.in); int i = sc.nextInt(); ' –

+1

@ScaryWombat, es sei denn, OP schließt' System.in'. – shmosel

+0

@ScaryWombat Und es könnte viele Gründe geben, 'System.in' zu schließen. 'Scanner # hasNextInt' bietet eine Möglichkeit, diese Ausnahme zu vermeiden, die genau meine Antwort war. –

Verwandte Themen