2016-04-19 45 views
0

我想從java文件中使用掃描器類獲取輸入。文件格式如下:從文件中取出輸入,直到在java中找到EOF爲止

NAME: sample.txt 

TYPE: txt 

COMMENT: Odyssey of Ulysses 

DIMENSION: 3 

EOF 

我想要做的是在一個變量x從文件中讀取上述行,直到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(「」)'來分割每個空格字符上的字符串。並最後解析您的變量變量 –

回答

0

您可以使用方法Scanner類,它在文件結尾處返回false。 Scanner#hasNextLine

當且僅當此掃描器有使用以下代碼輸入

嘗試的另一行:

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

索引1中的結果數組可以顯示演示代碼? @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中? @耶穌岡薩雷斯 – user6216509

0

的讀nextLine()函數返回一個字符串。因此您應該在作業中使用它: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 
     } 
相關問題