任务描述
本任务带领大家完成一个扇形的显示,并计算出扇形的周长和面积,运行显示的效果如图5-1所示。
图5-1 图形界面
支撑知识
5.1 浮点型
与表示整数的整型不同,浮点型代表的是实数,其实就是包含小数的部分。我们也知道现实世界中是由很多复杂的数据的,所以需要这种表示实数的数据类型的支持
浮点型定义如下:
double f = 1.23456;
5.2 类型转换
有时我们需要将一些小数通过四舍五入转换为整数,那么在Java中如何进行数据的转换呢?一个整数和一个浮点数能不能进行运算呢?下面这一小节我们就对上面的问题进行探讨。
1. 隐式转换
所谓隐式转换就是编译器自动根据规则转换数据类型。数据类型转换有如下规则:
规则1:提升规则
在一个表达式中,表达式的类型和最高级别类型相同。比如表达式(int+float+double), 则整个表达式最后的结果为double类型。其中int和float数据类型自动转换为double类型,然后才进行四则运算。
规则2:满足隐式转换的条件
在隐式转换中,数据不是随意转换的,它们要遵循一定的条件。
(1)转换类型之间类型要兼容,其中数值类型(整型、字符型和浮点型)相互兼容。
(2)只能将数据宽度小的转换为数据宽度大的类型。
2. 强制类型转换
隐式转换必须要满足上面的条件,如果我们想突破规则呢?比如将double型变量赋值给一个int型变量,如图5-2所示。
图5-2 出错信息
如果我们要进行这种转换该怎么处理呢?这个不难,只需在转换的数据前面加上要转换的数据类型就可以了。例如,将上面的语句:a = d; 改为a = (int)d; 。这种转换我们称为强制转换。
提示:隐式转换是从数据宽度小的数据类型转换为数据宽度大的数据类型,而强制转换是从数据宽度大的数据类型转换为数据宽度小的数据类型。
任务实施
修改MyPanel类,显示圆形,并计算圆周长和面积,如代码清单5-1所示。
代码清单5-1:MyPanel.java
//使用JPanel和Graphics类前需要导入
import java.awt.Graphics;
import javax.swing.JPanel;
//使用关键字extends继承JPanel,让MyPanel具有面板功能
public class MyPanel extends JPanel {
//坐标变量定义
//定义一个变量x,赋值为125
int x = 125;
int y = 100;
//半径定义
int r = 25;
double f = 1.23456;
//周长
double l = 2 * Math.PI * r;
//面积
double s = Math.PI * r * r;
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
//绘制方块,10,10表示位置,50,50表示长宽
g.drawString("圆的半径为:" + r, 100, 90);
g.fillOval(x, y, 2 * r, 2 * r);
g.drawString("圆的周长为:" + l, 50, 180);
g.drawString("圆的面积为:" + s, 50, 200);
}
}
拓展训练
计算扇形周长和面积。