2016-03-07 86 views
0

我一直在考慮這個任務:的Java文件寫入

編寫一個程序,需要輸入一個數n和文本字符串的文件名,並寫入n行到每一行是形式的文件中:i:開方(i)sqrt(i)sqrt(i)。第一列的範圍是1..n,而第一個平方根是小數點後一位,第二列是小數點後兩位,第三列是小數點後三位。

,我想出了這個代碼與幫助下我的大學導師之一,但..

public static void writeFile(final String filePath, final int n) throws IOException { 
    try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) { 
     final String format = "%-10s %-10.1f %-10.2f %-10.3f %n"; 
     for(int i=1;i<=n;i++){ 
      final double root = Math.sqrt(i); 
      writer.write(String.format(format,i+":",root ,root,root)); 
     } 
    } 
} 

....我怎麼會包含的意思是使用的文本文件?我想我會做一些類似於filepath = file.txt的東西。例如。但我不確定如何將其納入代碼中。我想出了格式化到任務要求的小數位。我是否需要將它包含在for循環或循環外部?謝謝

+0

不清楚你在問什麼。 – EJP

回答

0

你調用的方法應在文件名路過的文件路徑變量的一部分。 如果參數中的filePath沒有文件名,那麼您可以在該方法內定義文件名並與輸入文件路徑連接。您可以使用派生文件路徑來創建您的文件編寫器對象。

String completeFilePath = filePath.concat("file.txt"); 

try (BufferedWriter writer = new BufferedWriter(new FileWriter(completeFilePath))) { 
... 
} 

也請在完成操作後刷新/關閉寫入器對象。

+0

Flush在關閉時自動調用,由於接口AutoClosable,關閉會自動離開鏈接。 –

+1

錯過了它嘗試使用資源的事實。感謝您指出... –

+0

謝謝。因此,我需要添加整個目錄,如:(「c:/documents/file.txt」)或只需添加文件 – hans

0

當你調用你的方法時,你會傳遞filePath作爲參數。你只需要設置一次,在你的代碼

writeFile("textfile.txt",5);