初学Java 在看一本清华出版的垃圾教材import java.applet.Applet;
import java.awt.*;
public class Exam 4_10 extends Applet
{
double Data[]={90.5,50.7,27.8,13.0};
Color color[]={Color.blue,Color.red,Color.yellow,Color.green};
int degree[]=new int[4];
public void init()
{
resize(380,150); /*这里有个小疑问,resize是何物?书上没说,是设置applet的尺寸吗?前面的applet尺寸都是
插入HTML后设置的阿。*/ double sum=0.0;
for(int i=0;i<=Data.length;i++)
sum+=Data[i];
for(int i=0;i<=Data.length;i++)
degree[i]=(int)(Data[i]/sum*360+0.5); /*这里也有疑问,+0.5是何意?+了0.5就能保证360度了?那假如
Data[]={98.4,87.2,87.2,87.2}又如何?*/ }
public void paint(Graphics g)
{
int x0=90,y0=70,r=60,start=0;
for(int i=0;i<=Data.length;i++)
{
g.setColor(color[i]);
g.fillArc(x0-r,y0-r,2*r,2*r,start,degree[i]);
start+=degree[i];
}
g.setColor(Color.orange);
g.fillArc(180,50,180,125,30,120);
}
}
import java.awt.*;
public class Exam 4_10 extends Applet
{
double Data[]={90.5,50.7,27.8,13.0};
Color color[]={Color.blue,Color.red,Color.yellow,Color.green};
int degree[]=new int[4];
public void init()
{
resize(380,150); /*这里有个小疑问,resize是何物?书上没说,是设置applet的尺寸吗?前面的applet尺寸都是
插入HTML后设置的阿。*/ double sum=0.0;
for(int i=0;i<=Data.length;i++)
sum+=Data[i];
for(int i=0;i<=Data.length;i++)
degree[i]=(int)(Data[i]/sum*360+0.5); /*这里也有疑问,+0.5是何意?+了0.5就能保证360度了?那假如
Data[]={98.4,87.2,87.2,87.2}又如何?*/ }
public void paint(Graphics g)
{
int x0=90,y0=70,r=60,start=0;
for(int i=0;i<=Data.length;i++)
{
g.setColor(color[i]);
g.fillArc(x0-r,y0-r,2*r,2*r,start,degree[i]);
start+=degree[i];
}
g.setColor(Color.orange);
g.fillArc(180,50,180,125,30,120);
}
}
你可以直接使用编译器运行applet,不一定非得去手动设置html啊。所以这儿就用resize了第二个地方:+0.5,是因为要强制类型转化为int,四舍五入。还有一点:
for(int i=0;i <=Data.length;i++)
这个出现了三次,错了三次。中间的那一条判断应该是i < Data.length,而不是i <= Data.length。否则会出现数组下标越界的异常。我也菜鸟,不知道说的对不对