我正在研究TSP问题而且我要阅读我国家城市的xy坐标,但是当我尝试这样做时,我遇到了一个超出界限的数组,我想把x坐标放到数组中和y坐标到另一个,任何想法,谢谢。 包tsp;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class tsp {
public static void main(String[] args) {
// TODO Auto-generated method stub
String [] arr = new String[4000000];
String fileName = "EG - Copy1.csv";
File file = new File(fileName);
try {
@SuppressWarnings("resource")
Scanner inputStream = new Scanner(file);
while(true){
String xcoord = inputStream.next();
arr = xcoord.split(",");
double op = Double.parseDouble(arr[0]);
double opy = Double.parseDouble(arr[1]);
System.out.println(op+"****"+opy);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
如果语句xcoord.split(",")
未找到逗号,则返回一个元素的数组。
当您尝试从arr[1]
读取时,后者会使数组超出范围异常。
String [] arr = new String[4000000];
因为语句xcoord.split(",")
每次都会重新分配给arr
一个新数组。
答案 1 :(得分:0)
您的文件中有一行格式不正确。您可以按照以下方式更改代码,以仅处理格式良好的行。
try {
@SuppressWarnings("resource")
Scanner sc = new Scanner(file);
String [] arr;
while(sc.hasNextLine()){
String xcoord = inputStream.nextLine();
arr = xcoord.split(",");
if (arr.length == 2) {
double op = Double.parseDouble(arr[0]);
double opy = Double.parseDouble(arr[1]);
System.out.println(op+"****"+opy);
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}