import java.awt.*; import java.applet.*; import java.awt.event.*; public class myclass extends Applet implements ActionListener {Label l1,l2,l3; TextField t1,t2,t3; int a[]; float avg; public void init() {l1=new Label("请输入个数:"); t1=new TextField(6); l1=new Label("输入范围from"); t2=new TextField(6); l3=new Label("to"); t3=new TextField(6); add(l1); add(t1); add(l2); add(t2); add(l3); add(t3); t3.addActionListener(this); } public void paint(Graphics g) { int i; for(i=0;i<a.length;i++) g.drawString(a[i],15,i*20); g.drawString("平均数为:"+avg,50,20); }
public void actionPerformed(ActionEvent e) {int n,from,to,i,j,t; n=Integer.parseInt(t1.getText()); from=Integer.parseInt(t2.getText()); to=Integer.parseInt(t3.getText()); to-=from; a=new int[n]; for(i=0;i<a.length;i++) {a[i]=(int)(Math.random()*to)+from; avg+=a[i];} avg/=n; for(i=0;i<a.length-1;i++) {for(j=i+1;j<a.length;j++) if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;} repaint(); } } 找不出错在哪?
[此贴子已经被作者于2005-4-26 13:48:49编辑过]
----------------解决方案--------------------------------------------------------
晕,这么多天还是没人回答,顶一下!
----------------解决方案--------------------------------------------------------
JAVA里的数组能a=new int[n];这样定义?????
----------------解决方案--------------------------------------------------------
楼上的说得对,不能动态定义数组大小的
----------------解决方案--------------------------------------------------------
大概下个朋能帮你找出来了.时间是对我的考验.
----------------解决方案--------------------------------------------------------
动态定义是可以的啊!!!
----------------解决方案--------------------------------------------------------
你的程序有如下几个问题
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class myclass extends Applet implements ActionListener
{Label l1,l2,l3;
TextField t1,t2,t3;
int a[];
float avg;
public void init()
{l1=new Label("请输入个数:");
t1=new TextField(6);
l1=new Label("输入范围from");
应该改为l2=new Label("输入范围from");
否则加入l2的时候会出现指针异常
t2=new TextField(6);
l3=new Label("to");
t3=new TextField(6);
add(l1);
add(t1);
add(l2);
add(t2);
add(l3);
add(t3);
t3.addActionListener(this);
} public void paint(Graphics g)
{ int i;
for(i=0;i<a.length;i++)
这里读到a没有初始化,会出现错误
g.drawString(a[i],15,i*20);
g.drawString(String s,int x,int y);
看到没有,传入的参数类型错了,它要的是String,你却传一个int,你可以改为
g.drawString(""+a[i],15,i*20);
g.drawString("平均数为:"+avg,50,20);
}
public void actionPerformed(ActionEvent e)
{int n,from,to,i,j,t;
n=Integer.parseInt(t1.getText());
from=Integer.parseInt(t2.getText());
to=Integer.parseInt(t3.getText());
to-=from;
a=new int[n];
for(i=0;i<a.length;i++)
{a[i]=(int)(Math.random()*to)+from; avg+=a[i];}
avg/=n;
for(i=0;i<a.length-1;i++)
{for(j=i+1;j<a.length;j++)
if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;}
repaint();
} }
}
少了一个大括号
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
这么深呀?这个程序是算两个数之间的平均数吗?看不懂!!!
----------------解决方案--------------------------------------------------------
a=new int[n];一定要在方法中
----------------解决方案--------------------------------------------------------