因子问题

时间:2015-06-30 00:30:31

标签: java math jgrasp

我是编码Java的新手,但我需要编写一个从整数1到n的程序。该程序将要求用户输入一个正数,如果它不是正数,那么它将要求另一个数字。

一旦在程序中为n输入正整数,它就会显示如何计算n阶乘,然后计算结果。

所以我的程序会显示除了结果之外的所有正确的内容,它不会将所有数字相乘。如果有人可以指出我正确的方向,如何解决这个问题会很棒!

CODE:

import java.util.Scanner;
public class Problem5 {
   public static void main(String[] args){

   int n, i =1;
   Scanner kbd = new Scanner(System.in);

   System.out.print("Enter n: ");
   n = kbd.nextInt();

   while (n <= 0) {
      System.out.print("Enter n: ");
       n = kbd.nextInt();
   }
   for (i = 1; i <= n; i++){
      System.out.print( i+ "*");
   }

   System.out.print(" is " + n * i);

   }
}

输出:

输入n:5 1 * 2 * 3 * 4 * 5 *是30

正如您所看到的,结果应该是120而不是30。

4 个答案:

答案 0 :(得分:3)

只需改变那部分

for (i = 1; i <= n; i++){
   System.out.print( i+ "*");
}

System.out.print(" is " + n * i);

int result = 1;
for (i = 1; i <= n; i++){
   System.out.print( i+ "*");
   result *= i;
}

System.out.print(" is " + result);

你的最后一次打印是错误的,因为你简单地将n乘以i,这是一个简单的乘法,与factorial无关。

答案 1 :(得分:1)

你的程序正在进行一次计算(&#34;是&#34; + n * i)并且这个计算没有做一个因子。您可能希望不止一次地进行乘法 - 并使用不同的数字。

答案 2 :(得分:1)

您没有正确进行计算。您只需显示n* i`的最终结果。

在下面的解决方案中,我使用int fact = 1并将其与for循环中的i值相乘,并将结果分配回fact变量。这是核心部分。多数民众赞成你如何得到1*2*3...*n = n!

import java.util.Scanner;
public class SomeArrayQuestion {
    public static void main(String[] args) {

        int n, i = 1;
        Scanner kbd = new Scanner(System.in);

        System.out.print("Enter n: ");
        n = kbd.nextInt();

        while (n <= 0) {
            System.out.print("Enter n: ");
            n = kbd.nextInt();
        }
        int fact = 1;
        for (i = 1; i <= n; i++) {
            System.out.print(i + "*");
            fact = fact * i;
        }

        System.out.print(" is " + fact);

    }
}

答案 3 :(得分:0)

import java.util.Scanner;
public class Problem5 {
   public static void main(String[] args){

   int n, i =1;
   Scanner kbd = new Scanner(System.in);

   System.out.print("Enter n: ");
   n = kbd.nextInt();

   while (n <= 0) {
      System.out.print("Enter n: ");
       n = kbd.nextInt();
   }
   int result = 1;
   for (i = 1; i <= n; i++){
      System.out.print( i+ "*");
      result *= i;
   }

   System.out.print(" is " + result);

   }
}
Output:
    Enter n: 5
    1*2*3*4*5* is 120