我使用过扫描器类从给定的文本文件中获取输入。文件格式如下:
NAME: burma14
TYPE: TSP
COMMENT: 14-Staedte in Burma (Zaw Win)
DIMENSION: 5
EDGE_WEIGHT_TYPE: GEO
NODE_COORD_SECTION
1 16.47 96.10
2 16.47 94.44
3 20.09 92.54
4 22.39 93.37
5 25.23 97.24
我的示例代码片段如下:
public static void main(String[] args) {
try
{
Scanner in = new Scanner(new File("burma14.tsp"));
String line = "";
int n;
//three comment lines
in.nextLine();
in.nextLine();
in.nextLine();
//get n
line = in.nextLine();
line = line.substring(11).trim();
n = Integer.parseInt(line);
City[] city= new City[n];
for (int i = 0; i < n; i++) {
city[i]= new City();
}
//System.out.println("" +n);
//two comment lines
in.nextLine();
in.nextLine();
for (int i = 0; i < n; i++)
{
in.nextInt();
city[i].x = in.nextInt();
city[i].y = in.nextInt();
TourManager.addCity(city[i]);
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
基本上我在这里所做的就是从DIMENTION行中获取值,并根据这一点,我将不同城市的x和y坐标存储到不同的城市对象中。
但是我得到以下例外:
java.util.InputMismatchException
在该行:
city[i].x = in.nextInt();
我需要做出任何改变吗?
城市课程如下:
public class City {
int x;
int y;
// Constructs a randomly placed city
public City(){
}
// Constructs a city at chosen x, y location
public City(int x, int y){
this.x = x;
this.y = y;
}
// Gets city's x coordinate
public int getX(){
return this.x;
}
// Gets city's y coordinate
public int getY(){
return this.y;
}
}
答案 0 :(得分:5)
文件中的那些坐标不是整数。我不希望nextInt
用他们做你想做的事。试试nextFloat
。
[已编辑添加:]实际上,nextDouble
可能是一个更好的主意。