【问题标题】:Java factorial methodJava 阶乘法
【发布时间】:2018-06-22 16:59:11
【问题描述】:

我正在为我的阶乘方法寻求一些帮助。我似乎无法正确总结。

我只需要输入 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

【问题讨论】:

  • 不是results = results * factoral,而是results = i * results; 学习使用调试器,因为这会显示您的错误。
  • 还有“我似乎无法正确求和” -- 不涉及总和,只涉及乘积。
  • 你想得到阶乘的总和吗?喜欢5! =120 并且你想得到 1+2+0 =3 。我的假设正确吗?

标签: java methods factorial


【解决方案1】:

检查 cmets 是否有错误:

  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

【讨论】:

    【解决方案2】:

    您的代码中存在一些小缺陷。在相应语句下的注释中查找错误,并在以下代码中进行更正。注意不需要的额外行。您应该始终以尽可能少的行数编写代码,而不会影响可读性(即,也应使用适当的缩进)。

    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 中,我使用了分隔符(查找 \n)来最小化打印语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多