2015-02-09 65 views
0

假設有兩個類:ExamMainExam(包含main方法)。 class Exam has a constructor如何將信息從文本文件傳遞給構造函數?

public Exam(String firstName, String lastName, int ID) 

MainExam這個類從tex tfile讀取數據。例如,數據可以是:

John Douglas 57 

如何將數據從文本文件傳遞給構造函數?

+1

相同的方式,會從別的數據傳遞到構造函數。 – immibis 2015-02-09 07:50:21

+0

作爲流或只是文件名/路徑怎麼樣? – Stig 2015-02-09 07:51:00

+0

如何將數據放入對象? – jordan 2015-02-09 07:54:12

回答

0

下面是讀取文件中的代碼(以防萬一你實際上並不擁有它)

Scanner scanner = new Scanner(new File("C:\\somefolder\\filename.txt"); 
String data = scanner.nextLine(); 

現在,假設你的文件中的行是按以下格式:

<FirstName> <LastName> <id> 

無需在每個元素任何空白,您可以使用正則表達式" "String#splitdata

String[] arguments = data.split(" "); 

,然後將它們傳遞到構造函數(字符串,字符串,INT)

String fn = data[0]; 
String ln = data[1]; 
int id = Integer.parse(data[2]); 
new Exam(fn, ln, id); 
0

您可以參考下面的代碼片段,以文本文件的內容存儲在一個字符串對象:

BufferedReader br = null; 
    try { 
      String sCurrentLine; 
      br = new BufferedReader(new FileReader("C:\\testing.txt")); 
      while ((sCurrentLine = br.readLine()) != null) { 
      // System.out.println(sCurrentLine); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (br != null)br.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 

該文件的內容是sCurrentLine對象現在。使用StringTokenizer,您可以使用空格作爲分隔符來區分名字,姓氏和ID。希望這可以幫助!!

0

您可以使用StringTokenizer將數據分解爲由MainExam讀取的部分。

String str; //data read by MainExam, like: John Douglas 57 
String[] values = new String[3]; // size acording to your example 
StringTokenizer st = new StringTokenizer(str); 
int i=0; 
while (st.hasMoreTokens()) { 
    values[i++] = st.nextToekn(); 
} 

現在您已將數據在數組values中分隔。

+0

感謝您的嘗試,但StringTokenizer不允許用於我的項目 – jordan 2015-02-09 08:08:17

+0

這意味着您甚至不允許手動標記字符串? – minarmahmud 2015-02-09 08:09:55

相關問題