java.lang.ArrayIndexOutOfBoundsException:搞不定啊(先进先得)数组越界?

nian86 2005-02-28 10:09:19
我有一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)
...全文
5518 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongyang3 2005-03-01
  • 打赏
  • 举报
回复
数组长度越界了你的length应该-1
jspxnet 2005-03-01
  • 打赏
  • 举报
回复
for (int i = 0; i<arrayOfa.length -1 ;i++)
liuchunjp 2005-03-01
  • 打赏
  • 举报
回复
接分
hxzg001 2005-03-01
  • 打赏
  • 举报
回复
arrayOfa[i+1]当i=arrayOfa.length-1时发生数组越界异常,同理arrayOfa[arrayOfa.length]也越界了
congbailing_914 2005-03-01
  • 打赏
  • 举报
回复
先顶一下!
学习!
angues1980 2005-02-28
  • 打赏
  • 举报
回复
我来接分!
飞行的兔子 2005-02-28
  • 打赏
  • 举报
回复
怎么回事.
onefox 2005-02-28
  • 打赏
  • 举报
回复
ArrayIndexOutOfBounds

数组索引超出范围, 越界了
nian86 2005-02-28
  • 打赏
  • 举报
回复
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.net.*;
import java.util.*;
public class Dushu extends Applet
{
double max;

public void init()
{
double[] arrayOfa = new double[5];
try
{
String delim1 = ",";
String shu;
double a;

URL url = new URL(getCodeBase(),"output.txt");
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;

}
}
catch (IOException ioe)
{
System.out.println ("I/O error : " + ioe);
}
Arrays.sort(arrayOfa);
max = arrayOfa[arrayOfa.length-1];
/* double temp = arrayOfa[0];

for (int i = 0; i < arrayOfa.length; i++)

{
System.out.println(arrayOfa[i]);
temp = Math.max(temp,arrayOfa[i]); //利用Math.max()
}
double Max = temp; //得到最大值
*/
System.out.println(max);
}

}
//<applet code=Dushu NAME = "TestApplet" width=561 height=410 ALIGN = middle></applet>

//C:\myJSP>appletviewer Dushu.java测试

好了!!!我再加别的模块试试

现在散分

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧