2016-04-19 4 views
0

Я хочу взять данные из файла, используя класс сканера в java. Формат файла выглядит следующим образом:Принимая входные данные из файла до тех пор, пока EOF не будет найден в java

NAME: sample.txt 

TYPE: txt 

COMMENT: Odyssey of Ulysses 

DIMENSION: 3 

EOF 

, что я хочу сделать, это прочитать эти строки, пока EOF из файла и сохранить значение, содержащееся в строке «АСПЕКТ» в к переменной х. Я новичок в java и не понимаю, как это сделать, используя класс сканера. Я попробовал небольшой фрагмент кода, чтобы сделать это, как показано ниже, но не удалось:

Scanner in = new Scanner(new File("sample.txt")); 
String line = ""; 
int x; 
in.nextLine(); 
in.nextLine(); 
in.nextLine(); 

какие дополнительные вещи, мне нужно добавить, чтобы получить нужный вход?

+0

'nextLine () 'функция возвращает строку. поэтому вы должны использовать его с назначением: 'line = in.nextLine()'. это приведет к тому, что строковая переменная 'line' будет содержать третью строку в файле. после этого вы можете использовать метод 'string'' split ("") ', чтобы разбить строку на каждый пробел. и, наконец, разобрать результирующий массив в индексе 1 для вашей тусклой переменной –

ответ

0

Вы можете использовать метод hasNextLine класса Scanner, который возвращает false в конце файла. Scanner#hasNextLine

истинно тогда и только тогда, когда этот сканер имеет еще одну строку ввода

Try используя код ниже:

while (in.hasNextLine()) { 
    String line = in.nextLine(); 
    System.out.println(line); 
} 
+0

вы можете показать демонстрационный код? @Prabhaker – user6216509

1

примера читать с помощью Scanner

import java.io.File; 
import java.util.Scanner; 

public class ReadingFilesClass { 

    public static void main(String[] args) 
    { 
     try 
     { 
      Scanner in = new Scanner(new File("sample.txt")); 
      int x = -1; 
      String line = ""; 
      String[] lineSplit; 

      while (in.hasNextLine()) // while scanner reads 
      { 
       line = in.nextLine(); // read the line 
       lineSplit = line.split("[a-zA-Z]+:"); // split the line into elements 
       if (lineSplit[0].equals("DIMENSION:") // if the first element of the splitted string is equal to DIMENSION: 
       { 
        x = Integer.parseInt(lineSplit[1].trim()); // Assign the dimension to var 'x' parsing the second element, but removing the trailing spaces first 
       } 
      } 

      // Process contents 
      // if (x == -1) // means not found 
      // else // process dimension 
     } catch (FileNotFoundException x) { 
      // Do when not found 
     } 


    } 

} 
+0

вы не обратились к мотиву вопроса о получении целочисленной переменной, сохраненной в памяти программы. –

+0

, но как я могу сохранить значение «DIMENSION» в переменную x при сканировании строк? @Jesus Gonzalez – user6216509

0

вФункциявозвращает строку. поэтому вы должны использовать его с заданием: line = in.nextLine().
Выполнение этого три раза (как и у вас) приведет к тому, что строка с строкой будет содержать третью строку в файле.
После этого вы можете использовать метод string.split(" "), чтобы разделить строку на массив меньших строк на каждый пробел.
раскол массив будет содержать строку «Размеры:» индекса 0 и «3» на индексе 1.
, наконец, мы можем проанализировать полученный массив в индексе 1 для тусклых переменной

try { 
      Scanner sc = new Scanner(new File("example.text")); 

      String line = ""; 

      sc.nextLine(); // read and dump first lise 
      sc.nextLine(); // read and dump second line 
      line = sc.nextLine(); // read and save third line 
      String arr[] = line.split(" "); // split line into string array over space char 
      int dim = Integer.parseInt(arr[1]); 

     } catch (FileNotFoundException ex) { 
      // file not found 
     } 
Смежные вопросы