把计算最大值最小值和方差的循环语句改一下就可以了,for(i=0;i<v.size();i++);改成for(i=0;i<v.size()-1;i++);

解决方案 »

  1.   

    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    public class Example14_7 extends Applet implements ActionListener
    {
    Label 标题,提示,最大值,最小值,平均值,方差;
    TextField text[]=new TextField[4];
    TextArea input_number;
    Button b1,b2;
    int x=0,y=0,w,h;
    public void init()
    {
    Panel p=new Panel();
    p.setLayout(null);
    p.setSize(450,180);
    p.setBackground(Color.white);
    标题=new Label("欢迎使用数据分析小程序:",Label.CENTER);
    提示=new Label("输入的数据用逗号、空格或回车分隔",Label.CENTER);
    最大值=new Label("最大值:",Label.CENTER);
    最小值=new Label("最小值:",Label.CENTER);
    平均值=new Label("平均值:",Label.CENTER);
    方差=new Label("方 差:",Label.CENTER);
    for(int i=0;i<=3;i++)
    {
    text[i]=new TextField("0");
    text[i].setEditable(false);
    }
    input_number=new TextArea("0");
    Panel p1=new Panel();
    p1.setBackground(Color.green);
    b1=new Button("确定");
    b2=new Button("取消");
    b1.addActionListener(this);
    b2.addActionListener(this);
    p1.add(b1);
    p1.add(b2);
    w=p.getSize().width;
    h=p.getSize().height;
    x=w/4;
    y=h/7;
    p.add(标题);
    p.add(提示);
    p.add(平均值);
    p.add(方差);
    p.add(最大值);
    p.add(最小值);
    p.add(p1);
    p.add(input_number);
    for(int i=0;i<=3;i++)
    {
    p.add(text[i]);
    }
    标题.setBounds(0,0,4*x,y);
    提示.setBounds(0,y,4*x,y);
    input_number.setBounds(0,2*y,2*x,4*y);
    平均值.setBounds(2*x,2*y,x,y);
    text[0].setBounds(3*x,2*y,x,y);
    方差.setBounds(2*x,3*y,x,y);
    text[1].setBounds(3*x,3*y,x,y);
    最大值.setBounds(2*x,4*y,x,y);
    text[2].setBounds(3*x,4*y,x,y);
    最小值.setBounds(2*x,5*y,x,y);
    text[3].setBounds(3*x,5*y,x,y);
    p1.setBounds(0,6*y,4*x,y);
    add(p);
    }
    public void actionPerformed(ActionEvent e)
    {
    if(e.getSource()==b1)
    {
    String s=input_number.getText();
    double sum=0,average,fangcha=0,max,min;
    StringTokenizer fenxi=new StringTokenizer(s," ,'\n'");
    int n=fenxi.countTokens();
    Vector v=new Vector();
    int i=0;
    while(fenxi.hasMoreTokens())
    {
    String s1=fenxi.nextToken();
    sum+=Double.valueOf(s1).doubleValue();
    v.addElement(s1);
    }
    average=sum/n;
    max=min=Double.valueOf(v.elementAt(0).toString()).doubleValue();
    for(i=0;i<v.size();i++);
    {
    double temp=Double.valueOf(v.elementAt(i).toString()).doubleValue();
    if(temp>=max)
    {
    max=temp;
    }
    if(temp<=min)
    {
    min=temp;
    }
    }
    for(i=0;i<v.size()-1;i++)
    {
    double temp=Double.valueOf(v.elementAt(i).toString()).doubleValue();
    fangcha+=(temp-average)*(temp-average);
    }
    fangcha=fangcha/n;
    text[0].setText(""+average);
    text[1].setText(""+fangcha);
    text[2].setText(""+max);
    text[3].setText(""+min);
    }
    else if(e.getSource()==b2)
    {
    input_number.setText("0");
    for(int i=0;i<=3;i++)
    {
    text[i].setText("0");
    }
    }
    }
    }就是象楼上说的那样改一下,我运行试了,没有问题的
      

  2.   

    ArrayIndexOutOfBoundsException好象是数组下标出界了,qhfu(崩溃)说得对,v.size();返回的是实际的大小,而我们数组的下标是从0开始的,不能超出。