2014-01-12 6 views
1

Мне нужно создать факторный код с инструкцией if, else, где пользовательский ввод должен быть ВЕСОМ ПОЗИТИВНЫМ НОМЕРОМ БОЛЬШЕ, ЧЕМ НУЛЬ. В противном случае появится сообщение об ошибке, чтобы попросить пользователя ввести целое положительное число, большее нуля. Я начал с этим кодом:Создание factorial - if, else с сообщениями об ошибках в java

System.out.print("Enter your number: "); 
    int number = sc.nextInt(); 

    if (number<=0) 
     { 
      for (count=1; count<=number; count++) 
      factorial = factorial*count; 

      System.out.println("Factorial of your number is: "+factorial); 
      System.out.println(); 
     } 
    else 
    { 
     System.out.println("Enter a positive whole number greater than 0"); 
     System.out.println(); 
    } 

код работает отлично для факторных и сообщений об ошибках для ввода ноля или отрицательного числа. Поэтому единственное, что мне нужно, это определить номер WHOLE для сообщения об ошибке.

+0

Что вы имеете в виду «defin e WHOLE номер для сообщения об ошибке "? 'nextInt' выдает ошибку, если число не' int'. – Maroun

+2

Обрати логику в вашем if. Измените его на 'if (number> 0)'. Кроме того, обрабатывайте случай 'factorial (0) = 1'. – Keeler

ответ

1

Кажется, что йор ставят неправильный condion для если петли для number Как if(number<=0) будет принимать все число меньше или равное 0, но в соответствии с вашим состоянием вы хотите число больше 0, поэтому изменить код, как показано ниже ::

try{ 
    System.out.print("Enter your number: "); 
    int number=sc.nextInt(); 
    }catch(Exception ex) { 
     System.out.pritnln("please enter a valid number"); 
     ex.printStackTrace(); 
    } 


if (number>0) 
    { 
     for (count=1; count<=number; count++) 
     factorial = factorial*count; 

     System.out.println("Factorial of your number is: "+factorial); 
     System.out.println(); 
    } 
else 
{ 
    System.out.println("Enter a positive whole number greater than 0"); 
} 
+0

Спасибо - я ошибся, но он все еще не работает, когда пользователь вводит число, например. 6.4 или 9.747. Как я могу изменить код для всего числа? – MetalMuzu

+0

Можете ли вы определить целое число, оно больше 0 или больше или равно 0 ?? @ user2441860 –

+0

@ user2441860: int целое число. Определите, что вы подразумеваете под «целым числом», и объясните, чего не хватает, как вы уже спрашивали. –

-1

Проще говоря try блок вокруг вызова nextInt(), и если исключение, сказать пользователю, например, так:

int number = 0; 
boolean ok = true; 
try { 
    number = sc.nextInt(); 
} catch (Exception ex) { //user did not enter a valid integer 
    ok = false; 
} 

if (number>0 && ok) { 
    //... 
} else { 
    System.out.println("Enter a positive whole number greater than 0"); 
} 
+0

Это красное подчеркивает заявление catch – MetalMuzu

+0

Что вы ловите, должно быть исключение, указанное в выписке, пожалуйста, исправьте, если я ошибаюсь. @Andrew Sun –

+0

Извините, я программирую на C#, забыл, что Java явно объявляет тип исключения. Исправлено. –

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