Java版 求平均年龄01星球有学长若干名, 给出每个学长的年龄, 求01星球学长的平均年龄, 保留小数点后两位

1. 求平均年龄
01星球有学长若干名, 给出每个学长的年龄, 求01星球学长的平均年龄, 保留小数点后两位
输入: 
第一行: 整数n(1<n<100), 表示人数
之后n行: 每行一个整数a(15<a<55), 表示第n个学长的年龄
输出:
一个浮点数, 保留两位小数. 表示01星球学长平均年龄
 
样例输入:
3
18
18
17
样例输出:
17.67
package package01;

import java.util.Scanner;

/**
 * @author abner
 * @version 1.0
 */
public class practise3_1 {
    public static void main(String[] args) {
            int n, temp = 0;
            double age = 0;
        Scanner scanner = new Scanner(System.in);
        n=scanner.nextInt();
            for (int i = 0; i < n; i++) {
                temp=scanner.nextInt();
                age += temp;
            }
            age /= n;
        System.out.println(String.format("%.2f",age));
    }
}

java同C++一样,若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。

静态方法为类所有,可以通过对象来使用,也可以通过类来使用。

但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。

静态方法和实例方法的区别主要体现在两个方面:

1、在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象

2、静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

静态方法只能访问静态成员,实例方法可以访问静态和实例成员。

之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。

同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。

基于同样的道理,静态方法中也不能使用关键字this。

以下是01-gravity.html的代码及注释: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Gravity Simulation</title> <!-- 引入样式文件 --> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <!-- 创建画布 --> <canvas id="canvas"></canvas> <!-- 引入JavaScript文件 --> <script src="main.js"></script> </body> </html> ``` ```css /* style.css */ /* 设置画布样式 */ canvas { background-color: #f2f2f2; width: 100%; height: 100%; display: block; position: absolute; top: 0; left: 0; } ``` ```javascript // main.js // 获取画布和上下文 var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); // 设置画布大小 canvas.width = window.innerWidth; canvas.height = window.innerHeight; // 创建星球类 class Planet { constructor(x, y, dx, dy, radius, color) { this.x = x; // x 坐标 this.y = y; // y 坐标 this.dx = dx; // x 方向速度 this.dy = dy; // y 方向速度 this.radius = radius; // 半径 this.color = color; // 颜色 } // 绘制星球 draw() { ctx.beginPath(); ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, false); ctx.fillStyle = this.color; ctx.fill(); ctx.closePath(); } // 更新星球位置 update() { // 碰到边缘时反弹 if (this.x + this.radius > canvas.width || this.x - this.radius < 0) { this.dx = -this.dx; } if (this.y + this.radius > canvas.height || this.y - this.radius < 0) { this.dy = -this.dy; } // 更新位置 this.x += this.dx; this.y += this.dy; // 绘制星球 this.draw(); } } // 创建星球数组 var planets = []; // 创建 20 个星球 for (var i = 0; i < 20; i++) { var radius = Math.random() * 50 + 10; // 随机半径 var x = Math.random() * (canvas.width - radius * 2) + radius; // 随机 x 坐标 var y = Math.random() * (canvas.height - radius * 2) + radius; // 随机 y 坐标 var dx = (Math.random() - 0.5) * 10; // 随机 x 方向速度 var dy = (Math.random() - 0.5) * 10; // 随机 y 方向速度 var color = `rgb(${Math.random() * 255},${Math.random() * 255},${Math.random() * 255})`; // 随机颜色 planets.push(new Planet(x, y, dx, dy, radius, color)); // 添加到星球数组 } // 动画循环 function animate() { requestAnimationFrame(animate); ctx.clearRect(0, 0, canvas.width, canvas.height); // 清空画布 // 更新每个星球的位置 for (var i = 0; i < planets.length; i++) { planets[i].update(); } } // 开始动画 animate(); ``` 注释中涉及到的一些关键代码: - `canvas.getContext('2d')`: 获取画布上下文,返回一个`CanvasRenderingContext2D`对象,可以用于绘制 2D 图形。 - `ctx.beginPath()`: 启动一条新路径或重置当前路径。 - `ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise)`: 绘制一条以`(x, y)`为圆心、半径为`radius`的圆弧,起点和终点角度由`startAngle`和`endAngle`指定,如果`anticlockwise`为`true`则逆时针绘制,否则顺时针绘制。 - `ctx.fillStyle`: 设置绘制图形的填充颜色。 - `ctx.fill()`: 填充当前路径。 - `requestAnimationFrame(callback)`: 请浏览器在下一次重绘前调用`callback`函数,通常用于实现动画效果。 - `ctx.clearRect(x, y, width, height)`: 清空矩形区域,左上角坐标为`(x, y)`,宽高分别为`width`和`height`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值