大家帮忙看一个数组越界问题
时间:2011-10-04
来源:互联网
显示一个类里面的main函数
public static void main(String[] args) {
int id;
double distance = 0;
int[] sequence = new int[100];
double[][] vertex = new double[100][];
for(int i=0;i<100;i++){
id = (int)(Math.random()*100);
sequence[i] = id;
for(int j=0;j<i;j++){
if(sequence[j]!=sequence[i])
;
else
i--;
}
vertex[i] = TxtToArray.getCityLocation(sequence[i]);
//distance = distance+Math.sqrt((city[(i+1)%99][1]-city[i][1])*(city[(i+1)%99][1]-city[i][1])+(city[(i+1)%99][2]-city[i][2])*(city[(i+1)%99][2]-city[i][2]));
}
System.out.println(Arrays.toString(sequence));
System.out.println(vertex);
//System.out.println(distance);
}
然后是main方法里用到的TxtToArray类里面的方法getCityLocation
public static double[] getCityLocation(int id) {
double[] citys = getAllCitys();
double[] city = new double[3];
int j = 0;
for(int i=id*3-3; i<3*id; i++) {
city[j] = citys[i];
j++;
}
return city;
}
public static double[] getAllCitys() {
BufferedReader read = null;
StringBuffer strbuf = new StringBuffer("");
String str = "";
try {
read = new BufferedReader(
new InputStreamReader(
new FileInputStream("tsp101.txt")));
if((str = read.readLine()) != null) {
strbuf.append(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String strbuf2 = new String(strbuf);
String[] strCitys = strbuf2.split("\\s+");
double[] citys = new double[strCitys.length];
for(int i=0; i<strCitys.length; i++) {
String strCity = strCitys[i];
citys[i] = Double.parseDouble(strCity);
}
return citys;
}
其中txt文件内容格式是类似1 234.5 987.9 2 23.5 32.6,三个为一组,第一个是cityid,第二个是x坐标,第三个是y坐标。
单独运行txttoarray类的时候没有问题,但从main方法中调用的时候出了问题,我怀疑是处理数组的时候出了问题,但不会改,请大家帮忙改改。
public static void main(String[] args) {
int id;
double distance = 0;
int[] sequence = new int[100];
double[][] vertex = new double[100][];
for(int i=0;i<100;i++){
id = (int)(Math.random()*100);
sequence[i] = id;
for(int j=0;j<i;j++){
if(sequence[j]!=sequence[i])
;
else
i--;
}
vertex[i] = TxtToArray.getCityLocation(sequence[i]);
//distance = distance+Math.sqrt((city[(i+1)%99][1]-city[i][1])*(city[(i+1)%99][1]-city[i][1])+(city[(i+1)%99][2]-city[i][2])*(city[(i+1)%99][2]-city[i][2]));
}
System.out.println(Arrays.toString(sequence));
System.out.println(vertex);
//System.out.println(distance);
}
然后是main方法里用到的TxtToArray类里面的方法getCityLocation
public static double[] getCityLocation(int id) {
double[] citys = getAllCitys();
double[] city = new double[3];
int j = 0;
for(int i=id*3-3; i<3*id; i++) {
city[j] = citys[i];
j++;
}
return city;
}
public static double[] getAllCitys() {
BufferedReader read = null;
StringBuffer strbuf = new StringBuffer("");
String str = "";
try {
read = new BufferedReader(
new InputStreamReader(
new FileInputStream("tsp101.txt")));
if((str = read.readLine()) != null) {
strbuf.append(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String strbuf2 = new String(strbuf);
String[] strCitys = strbuf2.split("\\s+");
double[] citys = new double[strCitys.length];
for(int i=0; i<strCitys.length; i++) {
String strCity = strCitys[i];
citys[i] = Double.parseDouble(strCity);
}
return citys;
}
其中txt文件内容格式是类似1 234.5 987.9 2 23.5 32.6,三个为一组,第一个是cityid,第二个是x坐标,第三个是y坐标。
单独运行txttoarray类的时候没有问题,但从main方法中调用的时候出了问题,我怀疑是处理数组的时候出了问题,但不会改,请大家帮忙改改。
作者: Qushiyinyang 发布时间: 2011-10-04
已经解决了,谢谢各位
作者: Qushiyinyang 发布时间: 2011-10-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28