2014-02-06 64 views
0

我非常肯定它与分隔符有关,我对Java相对较新,似乎无法找到答案。我有一个名为Simulation.Configuration文件,该文件中有此数据为:从文件中读取数据时出现问题-java,

dimensionX: 100 
    dimensionY: 100 
    numberOfMobileObjects: 5 
    durationOfSimulationTime: 10 
    WarningGeotask: 1, 3 
    WarningGeotask: 2, 3 
    CounterGeotask: 1, 3 
    PopuplationMonitoringGeotask: 2, 3, 3 

我有一台扫描仪读取通过查找数据和做某些事情和他们在一起。我可以很容易地通过标签(dimensionX,dimensionY等),但似乎无法获得数字。我已经尝试了很多使用的分隔符来达到这些数字的方式,但似乎无法得到them.The最近的一次我试着用

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

我看了遍,但没有找到任何东西,帮助我的情况。任何提示都会很可爱。

回答

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

Documentation for String#split()

+0

也许存储在一个hashmap呢然后?.. – Sionnach733

0

你useDelimiter说法是错误的。 “[,:]”只使用一个字符作为分隔符。你想要任何一套。只需将其更改为:“[,:] +”。

+0

,仍然会抛出异常 – pedromss

相关问题