gpt4 book ai didi

java - 使用java中的scanner类从文件中获取输入

转载 作者:行者123 更新时间:2023-12-01 10:02:10 26 4
gpt4 key购买 nike

我正在尝试使用java中的两个坐标(x,y)在类中存储城市列表

我的类(class)如下:

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);
}
}

我的主要类(class)如下:

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

COMMENT: Odyssey of Ulysses (Groetschel/Padberg)

DIMENSION: 3

EDGE_WEIGHT_TYPE: GEO

NODE_COORD_SECTION

1 60 200

2 180 200

3 80 180

我想使用扫描仪类来获取输入,但在使用它时感到困惑。我已经制作了部分代码片段来接受输入,但它不起作用:

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和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);

关于java - 使用java中的scanner类从文件中获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36718469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com