java.lang.ArrayIndexOutOfBoundsException:搞不定啊(先进先得)数组越界?
我有一dat文件,output.dat内有数字:23,21.09,-5.786,34,87,......
现在想把其中的最大数取出,我的程序:
import java.io.*;
import java.util.StringTokenizer;
import java.lang.Double;
import java.lang.Integer;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
import java.net.*;//包引的很多,为了程序扩展用
public class Dushu extends Applet
{
double max;//最大值
public void init()
{
double[] arrayOfa = new double[50];//先定义一个数少的dat文件,内放6个数,因此数组
//大小定义为50
try
{
String delim1 = ",";
String shu;
double a;
URL url = new URL(getCodeBase(),"output.dat");
InputStreamReader reader = new InputStreamReader ( url.openStream( ));
BufferedReader bufReader = new BufferedReader ( reader );
String name = bufReader.readLine();
StringTokenizer tokenizer;
tokenizer = new StringTokenizer(name, delim1);
for (int i=0;tokenizer.hasMoreTokens();i++)
{
shu = tokenizer.nextToken(delim1);
a=Double.valueOf(shu).doubleValue();//包装器类Double.valueOf
arrayOfa[i] = a;//把dat中的数读到数组中
}
}
catch (IOException ioe)
{
System.out.println ("I/O error : " + ioe);
}
double max = arrayOfa[0];
for (int i = 0; i<arrayOfa.length;i++)//arrayOfa[i]
{
if (arrayOfa[i+1] > max)
max = arrayOfa[i+1];
//System.out.println("oo"+max);
}
System.out.println(max);
}
}
//<applet code=Dushu NAME = "TestApplet" width=561 height=410 ALIGN = middle></applet>
//C:\myJSP>appletviewer Dushu.java测试
出错:下表越界,要是把
double max = arrayOfa[0];
for (int i = 0; i<arrayOfa.length;i++)//arrayOfa[i]
{
if (arrayOfa[i+1] > max)
max = arrayOfa[i+1];
换成 Arrays.sort(arrayOfa);
max = arrayOfa[arrayOfa.length];
同样报错
怎样去最大数据?
java.lang.ArrayIndexOutOfBoundsException: 50
at Dushu.init(Dushu.java:45)
at sun.applet.AppletPanel.run(AppletPanel.java:353)
at java.lang.Thread.run(Thread.java:534)