我正在尝试使用java中的两个坐标(x,y)存储类中的城市列表
我的课程如下:
public class City {
int x;
int y;
// Constructs a city at chosen x, y location
public City(int x, int y){
this.x = x;
this.y = y;
}
}
我已经创建了另一个课程来存储ArrayList
中的城市:
public class TourManager {
// Holds our cities
private static ArrayList destinationCities = new ArrayList<City>();
// Adds a destination city
public static void addCity(City city) {
destinationCities.add(city);
}
}
我的主要课程如下:
public class Final {
public static void main(String[] args) {
// Create and add our cities
City city = new City(60, 200);
TourManager.addCity(city);
City city2 = new City(180, 200);
TourManager.addCity(city2);
City city3 = new City(80, 180);
TourManager.addCity(city3);
}
}
在这里,我在主要功能内的ArrayList
中存储了三个城市。但现在我想以下列格式从文件中获取输入。我只是想让坐标忽略所有其他界限。
NAME:sample.tsp
TYPE:TSP
评论:尤利西斯的奥德赛(Groetschel / Padberg)
维度:3
EDGE_WEIGHT_TYPE:GEO
NODE_COORD_SECTION
1 60 200
2 180 200
3 80 180
我想使用scanner类来获取输入但是在使用它时感到困惑。我已经制作了一个部分代码片段来获取输入,但它不起作用:
Scanner in = new Scanner(new File("sample.tsp"));
String line = "";
int n;
in.nextLine();
in.nextLine();
in.nextLine();
line = in.nextLine();
line = line.substring(11).trim();
n = Integer.parseInt(line);
in.nextLine();
in.nextLine();
但是,如何使用City类对象获取坐标,就像我之前从此文件中所做的那样?
答案 0 :(得分:1)
你需要跳过你不需要的前几行。
然后拆分线以获得各种数字。索引0包含序列号,1和2包含坐标。然后将它们解析为int
。例如:
in.nextLine();// multiple times.
//...
String cs = in.nextLine(); // get the line
City city = new City(Integer.parseInt(cs.split(" ")[1]), Integer.parseInt(cs.split(" ")[2]));
TourManager.addCity(city);
String cs2 = in.nextLine();
City city2 = new City(Integer.parseInt(cs2.split(" ")[1]), Integer.parseInt(cs2.split(" ")[2]));
TourManager.addCity(city2);
String cs3 = in.nextLine();
City city3 = new City(Integer.parseInt(cs3.split(" ")[1]), Integer.parseInt(cs3.split(" ")[2]));
TourManager.addCity(city3);
答案 1 :(得分:0)
每当您使用in.nextLine()
时,实际上它都会使用您输入的字符串。所以尝试将它分配给一些字符串变量。例如:
String s =in.nextLine();
此外,不需要使用你在第2,第3,第4和第9行所做的in.nextLine();
。