用Java编程 :输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 求高手指点

作者&投稿:吴委 (若有异议请与网页底部的电邮联系)
用Java编程 :输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 求高手指点~

System.out.println("请输入你要!的数:");//提示用户输入Scanner in = new Scanner(System.in);int n = in.nextInt();//获得用户输入的值long res=1;//因为数字可能会很大,所以使用longfor(int i=1;i<n+1;i++){//循环获得乘积res *= i;}System.out.println(res);//打印结果

public int doWhile(int n){
int rs = 1;
do{
rs *= n;
n--;
}while(n!=0);
return rs;
}

给你写了个程序可以实现,比如在主函数输入5,则输出表示5!(120)的数组[0, 2, 1],其中0表示个位数,2表示十位数,1表示百位数,程序如下:

public static void factor(int n) {
int[] product = {1};
        
        //从1开始,循环相乘,比如[1] * 2 -> [2]
        //[2] * 3 -> [6]
        //[6] * 4 -> [4, 2]
for (int i = 1; i < n; i++) {
product = helper(product, i + 1);
}
System.out.print(Arrays.toString(product));//输出结果
}

public static int[] helper(int[] s, int m) {
//计算一个数组s乘以m的值,比如120 * 6的值,s为[0, 2, 1],m为6

int i, temp = 0;
int[] result = new int[s.length + (s[s.length - 1] * m + "").length() - 1];

for (i = 0; i < s.length; i++) {
result[i] = (s[i] * m + temp) % 10;
if (s[i] * m + temp >= 10)
temp = (s[i] * m + temp) / 10;
else
temp = 0;
}
if (temp != 0) {

for (int j = 0; j < result.length - s.length; j++) {
result[i + j] = temp % 10;
if (temp >= 10)
temp = temp / 10;
else
temp = 0;
}
}
return result;
}

public static void main(String[] args) {
factor(23);
}

在该Java文件里要引入一个包:

import java.util.Arrays;

这个是为了输出结果的时候方便。


如果程序读不懂,有问题再追问。




平舆县15645913935: java用户输入一个正整数n, -
荀泼养血: Scanner c=new Scanner(System.in); System.out.println("please "); int n=c.nextInt(); double sum=0; if(n%2==0){ for(int i=2;i<=n;i=i+2){//奇数偶数只在i的初始值不同 sum+=1/(double)i; }} else { for(int i=1;i<=n;i=i+2){ sum+=1/(double)i; }} sum即为所求

平舆县15645913935: 编写程序(java):输入一个整数n,计算n的阶乘并捕捉可能出现的异常. -
荀泼养血: import java.util.Scanner; public class TestMax {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入一个整数");int x = input.nextInt();try {if (x > 20)throw new Exception("数字过...

平舆县15645913935: 编写一个Java应用程序,在键盘上输入一个正整数n, -
荀泼养血: 你要弄懂2个问题 1):只有1和它本身两个正因数的自然数,叫质数(或称素数); 2):合数都能被 2,3,5,7,11中的一个整除,那么 你可以这样写主逻辑算法:int n ;你见输入的那个数 if(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 11 == 0 ) {System.out.print( n + "是个合数");} else {System.out.print( n + "是个素数"); }

平舆县15645913935: 用java编程:由键盘任意给定一个正整数n,计算并输出小于n的最大素数 -
荀泼养血: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test {private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));public static String getString(){try {...

平舆县15645913935: 编写程序(java):输入一个整数n,计算n的阶乘并捕捉可能出现的异常.编写程序:输入一个整数n,计算n的阶乘并捕捉可能出现的异常.实验要求:(1... -
荀泼养血:[答案] import java.util.*; public class T { public static void main(String[] args){ try{ Scanner input = new Scanner(System.in); String num = input.nextLine(); if(!num.match("[^0]\\d+$")) { throw new RuntimeException("输入的不是自然数"); } if(Long....

平舆县15645913935: 输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,再输出交换后的n个数这是我写的java程序,可以帮忙看看错在哪... -
荀泼养血:[答案] 太不规范了吧.看着头晕. for(i=0;i

平舆县15645913935: java编程!!用户从键盘输入一个整数n,程序求出n的累加和并输出.(如:1+2+3+4+……+n) -
荀泼养血: 使用for循环即可,代码如下:import java.util.Scanner; public class Demo07 { public static void main(String[] args) { System.out.println("请输入你要求和的数:");//提示用户输入 Scanner in = new Scanner(System.in); int max = in.nextInt()...

平舆县15645913935: java语言编程 输入一个正整数N,输出表达式1+1/2+1/3+...+1/N的值 -
荀泼养血: public double getNum(int n) {//申明,n必须大于0 double sum = 0.0; if (n <= 0) {System.out.println("请输入正整数"); } else {for (int i =1; i < =n ; i++){sum += (double)1.0/i;} } return sum;}

平舆县15645913935: 求java代码写,输入一个正整数N,输出他的转置,比如输入12345,输出就为54321,要求使用for循环 -
荀泼养血: public static void main(String[] args) { Scanner in =new Scanner(System.in); System.out.println("请输入正整数!"); String aa=in.next(); String [] b=aa.split(""); String [] bb=new String[]{}; List list=new ArrayList(); for (int i = 0; ilist.add(b[b.length-1-i]); } for (String s : list) { System.out.print(s); } }

平舆县15645913935: 输入一个n位的正整数,输出各位的数字的立方和. 用Java该怎么写? -
荀泼养血: import java.util.*; public class Main {public static void main(String[]args){int n,num,sum=0;Scanner scan=new Scanner(System.in);num=scan.nextInt();while(num!=0){n=num%10;num/=10;sum+=Math.pow(n,3);}System.out.println("各位数字的立方和: "+sum); }}

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网