任务描述

本关任务:给定一个大于 1 的正整数 n,求所有小于 n 的自然数的平均值(保留两位小数)。 自然数的定义:大于等于 0 的整数。

相关知识

当我们想要对同样的操作执行多次,就需要使用到循环结构,在 Java 中循环结构主要分为三种:

  • while 循环;
  • do...while 循环;
  • for 循环。

之前我们已经学习了 while 循环,今天我们来学习跟 while 循环相似的另一种循环结构 —— do...while 循环。

do...while 循环

首先我们来了解一下 do...while 循环的逻辑:

java求个数分布 java求n个数的平均值_java

图1

如上图1所示,do...while 循环首先会执行一遍循环体语句,然后再判断 while 后面的条件是否成立,成立的话继续执行循环体语句,不成立的话退出循环,它的语法格式如下所示:

1. do {
2. 循环体语句序列;
3. } while(循环条件表达式);

do...while 循环与 while 循环的区别就在于 do...while 循环是先执行循环语句,后判断,而 while 循环是先判断,后执行循环语句,也就是说 do...while 循环会保证循环体语句最少被执行一遍。

do...while 循环使用案例:循环打印”好好学习,天天向上“ n 次。

1. public class DWhileTest {
2. public static void main(String[] args) {
3. // 定义整数变量i,并赋初值0
4. int i=0;
5. // 创建Scanner对象
6. Scanner input = new Scanner(System.in);
7. 
8. // 获取输入的整数值
9. int n = input.nextInt();
10. 
11. // 在do后的花括号中编写循环语句
12. do{
13. System.out.print("好好学习,天天向上");
14. i++;
15. }
16. // 在while后判断条件
17. while(i<n);
18. }
19. }

当 n=5 时,控制台输出结果:


1. 好好学习,天天向上
2. 好好学习,天天向上
3. 好好学习,天天向上
4. 好好学习,天天向上
5. 好好学习,天天向上

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。

/*
任务:通过Scanner对象获取输入值n,求所有小于n的自然数的平均值。
输出的平均值请转化为double类型。
*/

import java.util.Scanner;

public class DWhileTest {
    public static void main(String[] args) {
        // 定义变量n,接收输入值
        int n;
        // 定义求和变量sum,并赋初值0
        int sum=0;
        // 定义变量i,并赋初值0
        int i=0;
        
        //创建Scanner对象
        Scanner input = new Scanner(System.in);
         // 请在Begin-End间编写代码
        /********** Begin **********/
        
		// 获取输入值n
        n = input.nextInt();
        do{
            sum+=i;
            i++;
        }          
        // 在while后判断条件,当i小于n时退出循环
        while(i<n);
        double avg = (double)sum / n;
        // 输出平均值,保留两位小数
        System.out.printf("%.2f",avg);
        
        /********** End **********/

    }
}