2015-11-07 1 views
0

Я чрезвычайно новичок в Java, как вы можете узнать из моего кода. Любая помощь приветствуется :)java using append для извлечения данных из строки файла

У меня есть файл содержит строки:

столбцов в файле: 7

Exact файла Количество (строк): 118

Точная запись файла Длина (Байты в Variable Block): 52

Я хочу использовать append для извлечения чисел после метки, но он возвращает ноль, а не фактическое число после метки. Вот что у меня есть:

public int extractVariables(String aLine) 
    { 
    Scanner scan = new Scanner(actualFile); 
    while(scan.hasNext()) 
    { 
     String line = scan.nextLine(); 
     if(line.contains("Columns in File:")) 
     { 
      StringBuilder numOfVariables = new StringBuilder(); 
      for(int i = 16; i < line.length(); i++) 
      { 
       numOfVariables.append(charAt(i)).trim(); 
      } 
     // check if the information is missing 
       if(numOfVariables != null && !numOfVariables.equals("")) 
       { 
        int variables = Integer.parseInt(numOfVariables); 
       } 
       else 
       { 
        System.out.print("Number of varibales is missing!"); 
       } 
      } 
      return variables; 
     } 
    } 

Кроме того, я прошу пользователю ввести файл с помощью аргумента командной строки и сохраните файл в actualFile, как это:

 try{ 
      File actualFile = new File(args[0]); 
      System.out.println("File was processed: true"); 
     } 
     catch (ArrayIndexOutOfBoundsException e) 
     { 
      System.out.println("File was processed: false. Re-enter filename."); 
      return; 
     } 

Так что я положил actualFile для сканер, чтобы открыть файл и прочитать строки, сканер читает правильный файл? Может быть, поэтому метод возвращает ноль?

ответ

0

Вместо того чтобы делать

for(int i = 16; i < line.length(); i++) 
     { 
      numOfVariables.append(charAt(i)).trim(); 
     } 

Кажется, лучше использовать nextInt(); Таким образом, код будет выглядеть примерно так:

line.nextInt(); 

Кроме того, чтобы проверить, есть ли номер или, если он отсутствует, вы можете использовать:

if(line.hasNextInt()) {...} 
Смежные вопросы