一个出错程序,请高手帮忙!!! 把计算最大值最小值和方差的循环语句改一下就可以了,for(i=0;i<v.size();i++);改成for(i=0;i<v.size()-1;i++); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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"); } } }}就是象楼上说的那样改一下,我运行试了,没有问题的 ArrayIndexOutOfBoundsException好象是数组下标出界了,qhfu(崩溃)说得对,v.size();返回的是实际的大小,而我们数组的下标是从0开始的,不能超出。 排序方法,有空的来讨论一下下? j2se开发蓝牙程序 swing在windows和linux下运行诞生不同的结果 Java画图,用GeneralPath还是用DrawLine,DrawOval之类的. 讨论,要如果把CS和BS结合 求一比较算法,喜欢接受挑战的请进!! 关于new package加载的问题 怎样使用JAVA来得到运行时系统的信息? 关于jsp的烦人错误,请高手们解答一下 用java applet写email发送程序 帮忙看看这个程序怎么了?解决立即给分~~~~~~ 请教
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");
}
}
}
}就是象楼上说的那样改一下,我运行试了,没有问题的