我是编码Java的新手,但我需要编写一个从整数1到n的程序。该程序将要求用户输入一个正数,如果它不是正数,那么它将要求另一个数字。
一旦在程序中为n输入正整数,它就会显示如何计算n阶乘,然后计算结果。
所以我的程序会显示除了结果之外的所有正确的内容,它不会将所有数字相乘。如果有人可以指出我正确的方向,如何解决这个问题会很棒!
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。
答案 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