2016-10-16 8 views
0

Я ищу небольшую помощь по моему факториальному методу. Кажется, я не могу правильно его подсчитать.Java факторный метод

Мне нужно только взять любое число от 1 до 12, а затем суммировать умножение ... и вернуть суммирование.

Пользователь выбирает: 5 1 * 2 * 3 * 4 * 5 = 120

package cit130hmw07_laginess; 

    import java.util.Scanner; 

public class CIT130HMW07_Laginess 
{ 


    public static void main(String[] args) 
    { 
    Scanner input = new Scanner(System.in); 

    System.out.println("Please select a number between 0 and 12:"); 
    int factorial = input.nextInt(); 

    sumFactorials(factorial); 
    int facSum = sumFactorials(factorial); 
    System.out.println(""); 
    System.out.println("Your results are: " + facSum); 
    System.out.println(""); 

    }//main 

    public static int sumFactorials(int factorial) 
    { 

     int results = 1; 
     for(int i = 1; i <= factorial; i++) 
     results = results * factorial; 

     return results; 

    }//factorials 
}//class 
+7

не 'результаты = результаты * factoral', а результаты' results = i *; 'Научиться использовать отладчик, так как это покажет вам вашу ошибку. –

+0

Также _ «Кажется, я не могу правильно его подсчитать» _ - нет никаких сумм, только продуктов. –

+0

Вы хотите получить сумму факториалов? как 5! = 120, и вы хотите получить 1 + 2 + 0 = 3. Правильно ли мое предположение? –

ответ

0

Некоторые небольшие недостатки в коде. Ищите ошибки в комментариях в соответствии с соответствующим заявлением и их исправления в следующем коде. Обратите внимание на дополнительные строки, которые не требуются. Вы всегда должны писать код с минимальными строками, насколько это возможно, без ущерба для удобочитаемости (т. Е. С правильным отступом).

package cit130hmw07_laginess; 

import java.util.Scanner; 

public class CIT130HMW07_Laginess 
{ 


    public static void main(String[] args) 
    { 
    Scanner input = new Scanner(System.in); 

    System.out.println("Please select a number between 0 and 12:"); 
    int factorial = input.nextInt(); 

    //sumFactorials(factorial); 
    //this line was not required. 

    int facSum = sumFactorials(factorial); 

    //System.out.println(""); 
    //not required when you can use delimiters inside println 

    System.out.println("\nYour results are: " + facSum + "\n"); 

    //System.out.println(""); 
    //same as before. 

    }//main 

    public static int sumFactorials(int factorial) 
    { 

     int results = 1; 
     for(int i = 1; i <= factorial; i++) 
     //results = results * factorial; 
     //this was where your code was not correct.    

     //Correct : 
     results = results * i; 
     return results; 

    }//factorials 
}//class 

Внутри Println, я использовал разделители (ищите \ п), чтобы свести к минимуму заявления печати.

0

проверка комментариев ваших ошибок:

  1. только коррекция:

    результаты = результаты * I;
    отдых был ненужным;

упаковка cit130hmw07_laginess;

import java.util.Scanner; 

public class CIT130HMW07_Laginess 
{ 


    public static void main(String[] args) 
    { 
    Scanner input = new Scanner(System.in); 

    System.out.println("Please select a number between 0 and 12:"); 
    int factorial = input.nextInt(); 

    //sumFactorials(factorial); 
    int facSum = sumFactorials(factorial); 
    //System.out.println(""); 
    System.out.println("Your results are: " + facSum); 
    //System.out.println(""); 

    }//main 

    public static int sumFactorials(int factorial) 
    { 

     int results = 1; 
     for(int i = 1; i <= factorial; i++) 
     //results = results * factorial; 
      results=results*i; 

     return results; 

    }//factorials 
}//class