2015-11-23 150 views
0

我在使用OOP在Java中讀取數據的第一行時遇到了一些問題。這個工作沒有OOP這裏:OOP文件讀取問題

Scanner in = new Scanner(System.in); // sets up scanner 
    System.out.print("Enter file name: "); //user provides file name and location 
    String userFile = in.nextLine(); // accepts input from user 
    File file = new File(userFile); //uses the file method to import the data 
    Scanner inputFile = new Scanner(file); // uses scanner to read the data 
    String fileContents = inputFile.nextLine(); 
    System.out.print(fileContents); 

但是我不能」得到這個在類文件的工作,因爲該方法nextLine()是未定義String類型,即使我真的只是使用上面。

public String Out(String userIn) 
{ 
    String nOfStudentsIndex = userIn.nextLine(); 

此外,爲什麼我不能以這種方式傳遞文件到其他類文件?

Scanner in = new Scanner(System.in); // sets up scanner 
    System.out.print("Enter file name: "); //user provides file name and location 
    String userFile = in.nextLine(); // accepts input from user 
    File file = new File(userFile); //uses the file method to import the data 
    Scanner inputFile = new Scanner(file); // uses scanner to read the data 
    System.out.println(inputFile.Out()); 
+0

'String'沒有'nextLine()','Scanner'一樣。 – GiantTree

回答

3

爲什麼不通過掃描儀對象需要它?例如,

// pass in Scanner, not String 
public String Out(Scanner userIn) { 
    String nOfStudentsIndex = userIn.nextLine(); 

只是要確保不要關閉使用System.in,直到你的程序使用它肯定做了掃描儀。

而且,這是不行的:

Scanner inputFile = new Scanner(file); // uses scanner to read the data 
System.out.println(inputFile.Out()); 

如掃描儀不具有Out()方法。根據掃描程序API,您只能使用該類可用的方法。

你可以通過文件使用掃描儀分析,打印出的每一行,因爲它涉及使用while循環

Scanner fileScan = new Scanner(file); // uses scanner to read the data 
while (fileScan.hasNextLine()) { 
    System.out.println(fileScan.nextLine(); 
} 
fileScan.close(); 
+0

我需要將fileScan傳遞到另一個類文件以對其進行計算。上面的過程只是打印出來,直到沒有剩下的線。 – frillybob

+0

@frillybob:然後在別處傳遞它。但我的猜測是,除了掃描儀之外,您將需要文件的**內容**。所以也許你想將它提取到一個'ArrayList '或一個StringBuilder中,然後在需要的地方傳遞*。*。 –