我很确定它与分隔符有关,而且我对Java相对较新,似乎无法找到答案。我必须从名为Simulation.Configuration的文件中读取,其中包含以下数据:
dimensionX: 100
dimensionY: 100
numberOfMobileObjects: 5
durationOfSimulationTime: 10
WarningGeotask: 1, 3
WarningGeotask: 2, 3
CounterGeotask: 1, 3
PopuplationMonitoringGeotask: 2, 3, 3
我有一个扫描仪阅读以查找数据并使用它们执行某些操作。我可以很容易地通过标签(dimensionX,dimensionY等),但似乎无法达到数字。我已经尝试了很多方法使用分隔符来达到这些数字,但似乎无法达到它们。我最近尝试过的是使用
scanner.useDelimiter("[ ,:]");
了解数据。当我这样做时,它给了我一个InputMismatchException。 这是我正在阅读文件的方式:
Scanner scanConfig = new Scanner(new File("Simulation.Configuration"));
scanConfig.useDelimiter("[ ,:]");
int dimensionX = 0;
int dimensionY = 0;
int numberOfMobileObjects = 0;
while(scanConfig.hasNextLine()){
String nextLabel = scanConfig.next();
if(nextLabel.equals("dimensionX")){
dimensionX = scanConfig.nextInt();
}
if(nextLabel.equals("dimensionY")){
dimensionY = scanConfig.nextInt();
}
if(nextLabel.equals("numberOfMobileObjects")){
numberOfMobileObjects = scanConfig.nextInt();
}
我看了一遍,找不到任何有助于我情况的事情。任何有关这方面的提示都很可爱。
答案 0 :(得分:1)
您为分隔符提供的regex没有按照您的想法进行操作。我会接受 相反,这种做法。
String input = scanner.nextLine();
String[] array = input.split(":");
String label = array[0];
String data = array[1];
String[] number = data.split(",");
Integer x = new Integer(number[0]);
答案 1 :(得分:0)
你的useDelimiter参数错误。 “[,:]”仅使用一个字符作为分隔符。你想要任何一套。只需将其更改为:“[,:] +”。