2017-03-15 142 views
-1

在java中,如何只读取文件中的数据,并忽略前面的字符串?请大家,我做了很多研究,但我似乎无法找到它。如何只读取文件中的数据(忽略字符串)?

这里是一个示例文本文件:

number of courses:3 
course numbers:219 214 114 
arrival Probabilities:0.4 0.6 0.8 
min time:2 
max time: 4 
num cups:1 
simulation time:50 
number of tas:2 

现在,当你们看到的,我只是想读的数字。

我当前的代码是下面的,但我碰上InputMismatchException时,由于显而易见的原因(它读取字符串整数的第一代替):

//Read file 
     while(input.hasNext()){ 
      //Read Number of Courses 

      numCourses = input.nextInt(); 
      courseNumbers = new int[numCourses]; //Initialize the size of courseNumbers array. 
      arrivalProbability = new double[numCourses]; //Initialize the size arrivalProbability array. 

      //Read the CourseNumbers, numCourses times. 
      for(int i = 0; i < numCourses; i++){ 
       courseNumbers[i] = input.nextInt(); 

      } 

      //Read the arrivalProbability, numCourses times. 
      for(int i = 0; i < numCourses; i++){ 
       arrivalProbability[i] = input.nextDouble(); 

      } 

      //Read minTime 
      minTime = input.nextInt(); 

      //Read maxTime 
      maxTime = input.nextInt(); 

      //Read number of Coffee cups 
      numCups = input.nextInt(); 

      //Read simulation time 
      officeHrTime = input.nextInt(); 

      //Read the number of TAs 
      numTAs = input.nextInt(); 
     } 

感谢您的帮助提前!

+1

你是否保证每个数字前都有':'(冒号)? –

+0

你必须读取字符串并丢弃它们 –

回答

1

我会做这样的:

  • 读取一行
  • 解析线,确定哪些部分是标签,哪一部分是数据
  • 使用的标签,以确定如何存储数据

请勿使用nextInt,请使用nextLine。你需要做更多的错误检查,但我会这样做,但我会这样做:

int numCourses; 
int[] courseNumbers; // I would use a list here, but sticking with your data types for clarity. 

while(input.hasNextLine()) { 
    String line = input.nextLine(); 
    String[] lineParts = line.split(":"); 
    String label = lineParts[0]; 
    String value = lineParts[1]; 

    if(label.equals("number of courses")) { 
     numCourses = Integer.parseInt(value); 
    } else if(label.equals("course numbers")) { 
     String[] courseNumberStr = value.split(" "); 
     courseNumbers = new int[numCourses]; // you probably want to make sure numCourses was set and courseNumStr has the correct number of elements 
     for(int i = 0; i < courseNumberStr.length; i++) { 
      courseNumbers[i] = Integer.parseInt(courseNumberStr[i]); 
     } 
    } else if(/* handle the rest of the inputs */) { 
     // etc 
    } 
+0

非常感谢! –

相关问题