java单循环 比较得分_java 计算1+2!+3!+.....+n!分别用单循环、while双重循环、do/while双重循环...

本文通过三个Java程序示例,分别使用单循环、while双重循环和do/while双重循环计算1到n的阶乘之和。代码详细展示了不同循环结构的实现方式,并附带了测试结果。
摘要由CSDN通过智能技术生成

展开全部

单循环62616964757a686964616fe78988e69d8331333332616530实现-----------------------华-----丽-----丽-----的-----分-----割-----线-------------------------------------import java.util.Scanner;

public class Test {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner input = new Scanner(System.in);

System.out.print("请输入一个整数:");

int n = input.nextInt(); //获得n值

int outNeed = n;         //外层要循环 outNeed 次

int outNow = 1;          //正在进行   外层 第 outNow 次 循环

int inNeed = outNow;     //当前(外层 第 outNow 次循环时)内层需要循环 inNeed 次

int inNow = 1;           //正在进行(外层 第 outNow 次循环)内层 第 inNow 次循环

int sum = 0;             //外层前 outNeed 层 循环完毕后的和

int k = 1;               //(外层前 outNeed 层) 内层第 inNow 循环完毕的积

String str = "";

while(true){ //不知道要循环多少次,则设为true

if(outNow <= outNeed){  //如果当前外层未循环完

if(inNow <= inNeed){   //如果当前内层的内层未循环完

//下一行可以解注释

//System.out.println("外层第 " + outNow + " 层,内层第 " + inNow + " 层循环---------------");

k *= inNow;

inNow++;

continue;

}else{

sum += k;

if(outNow >= 2){

str += " + " + outNow + "!";

}else{

str += outNow + "!";

}

//下一行可以解注释

//System.out.println("外层第 " + outNow + " 层循环结束!\n   sum = " + sum);

//重置

inNow = 1;

k = 1;

outNow++;

inNeed++;

continue;

}

}else{

break;

}

}

System.out.println(str + " = " + sum);

}

}

while双循环实现-----------------------华-----丽-----丽-----的-----分-----割-----线-------------------------------import java.util.Scanner;

public class Test2 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner input = new Scanner(System.in);

System.out.print("请输入一个整数:");

int n = input.nextInt(); //获得n值

int outNeed = n;         //外层要循环 outNeed 次

int outNow = 1;          //正在进行   外层 第 outNow 次 循环

int inNeed = outNow;     //当前(外层 第 outNow 次循环时)内层需要循环 inNeed 次

int inNow = 1;           //正在进行(外层 第 outNow 次循环)内层 第 inNow 次循环

int sum = 0;             //外层前 outNeed 层 循环完毕后的和

int k = 1;               //(外层前 outNeed 层) 内层第 inNow 循环完毕的积

String str = "";

while(outNow <= outNeed){ //如果当前外层未循环完

while(inNow <= inNeed){  //如果当前内层的内层未循环完

//下一行可以解注释

//System.out.println("外层第 " + outNow + " 层,内层第 " + inNow + " 层循环---------------");

k *= inNow;

inNow++;

}

sum += k;

if(outNow >= 2){

str += " + " + outNow + "!";

}else{

str += outNow + "!";

}

//下一行可以解注释

//System.out.println("外层第 " + outNow + " 层循环结束!\n   sum = " + sum);

//重置

inNow = 1;

k = 1;

outNow++;

inNeed++;

}

System.out.println(str + " = " + sum);

}

}

do-while双循环实现-----------------------华-----丽-----丽-----的-----分-----割-----线---------------------------import java.util.Scanner;

public class Test3 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner input = new Scanner(System.in);

System.out.print("请输入一个整数:");

int n = input.nextInt(); //获得n值

int outNeed = n;         //外层要循环 outNeed 次

int outNow = 1;          //正在进行   外层 第 outNow 次 循环

int inNeed = outNow;     //当前(外层 第 outNow 次循环时)内层需要循环 inNeed 次

int inNow = 1;           //正在进行(外层 第 outNow 次循环)内层 第 inNow 次循环

int sum = 0;             //外层前 outNeed 层 循环完毕后的和

int k = 1;               //(外层前 outNeed 层) 内层第 inNow 循环完毕的积

String str = "";

do{

do{

//下一行可以解注释

//System.out.println("外层第 " + outNow + " 层,内层第 " + inNow + " 层循环---------------");

k *= inNow;

inNow++;

}while(inNow <= inNeed);//如果当前内层的内层未循环完

sum += k;

if(outNow >= 2){

str += " + " + outNow + "!";

}else{

str += outNow + "!";

}

//下一行可以解注释

//System.out.println("外层第 " + outNow + " 层循环结束!\n   sum = " + sum);

//重置

inNow = 1;

k = 1;

outNow++;

inNeed++;

}while(outNow <= outNeed);//如果当前外层未循环完

System.out.println(str + " = " + sum);

}

}

附:

测试结果(已把代码中可以解注释的地方解注释过):

2cdf19e73f48bfc4e0e49310a8b3dc8d.png

****************************************希望能够帮助到你!*********************************************

为帮楼主尽快解决问题,写到现在困死了,

如果我的回答对你有帮助,

别忘了点击我的回答下方【选为满意答案】按钮。

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值