2016-02-07 284 views
0

因此,我試圖創建一個程序,它以首字母和姓氏的形式輸入,然後將其打印到Output.txt文件中。 我對編程有點新鮮感,而且我認爲我在這方面做了一些推敲。將輸出寫入文本文件

我只是不斷收到我的程序的最後部分錯誤。

PrintInitials.java:21: error: <identifier> expected 
} output.close(); 
      ^
1 error 

這裏是我的代碼

import java.util.Scanner; 
import java.io.PrintWriter; 
import java.io.Writer; 
import java.io.*; 

public class PrintInitials 

{ 
    public static void main(String[] args) 
    { 
    Scanner stdIn = new Scanner(System.in); 
    String first; // first name 
    String last; // last name 
    System.out.print("Enter your first and last name separated by a space: "); 
    first = stdIn.next(); 
    last = stdIn.next(); 
    File file = new File("Output.txt"); 
    FileWriter writer = new FileWriter(file, true); 
     PrintWriter output = new PrintWriter(writer); 
     output.print("Your initials are " + first.charAt(0) + last.charAt(0) +  "."); 
    } output.close(); 
} 
+1

格式非常差的代碼。我認爲一旦格式正確,問題就會清楚。 – Sufian

回答

1

做這樣的:

Scanner stdIn = new Scanner(System.in); 

    System.out.print("Enter your first and last name separated by a space: "); 
    String first = stdIn.next(); // first name 
    String last = stdIn.next(); // last name 

    stdIn.close(); 

    try (FileWriter writer = new FileWriter(new File("Output.txt"), true); // autocloseable 
      PrintWriter output = new PrintWriter(writer)) { // autocloseable 

     output.print("Your initials are " + first.charAt(0) + last.charAt(0) + "."); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

的作家將自動關閉。

0

的問題是,在關閉流之前,你是關閉的方法體。所以'output.close();'是在方法之外並進入類體。

你的新代碼應該是這樣的:

import java.util.Scanner; 
import java.io.PrintWriter; 
import java.io.Writer; 
import java.io.*; 

public class PrintInitials{ 

public static void main(String[] args){ 
try{ 
    Scanner stdIn = new Scanner(System.in); 
    String first; // first name 
    String last; // last name 
    System.out.print("Enter your first and last name separated by a space: "); 
    first = stdIn.next(); 
    last = stdIn.next(); 
    File file = new File("Output.txt"); 
    FileWriter writer = new FileWriter(file, true); 
    PrintWriter output = new PrintWriter(writer); 
    output.print("Your initials are " + first.charAt(0) + last.charAt(0) +  "."); 
    output.close(); 
}catch(IOException e){ 
    e.printStackTrace(); 
} 
    } 
} 

如果您還沒有已經,看看到Java Basic Syntax 和PrintWriter的的文檔,以檢查由被拋出的異常是什麼什麼方法使你可以趕上他們並像上面那樣處理它們,或者只是傳遞它們。

而且,使用IDE,比如Eclipse,你會因此你不必編譯每次都自己來檢查,如果你的語法正確顯示的所有語法錯誤實時爲您的代碼。而且大多數IDE通常都會提供針對特定錯誤的解決方案。除此之外,它會警告你什麼方法拋出什麼異常,以便你可以捕獲它們。

+0

我只是嘗試,並得到一個新的錯誤PrintInitials.java:18:錯誤:未報告的異常IOException異常;必須被捕獲或聲明爲拋出 FileWriter writer = new FileWriter(file,true); ^ 1錯誤 – xCanaan

+0

@xCanaan我對這篇文章做了編輯。 –

-2

試試這個

BufferedWriter br= new BufferedWriter(new FileWriter(file)){ 


    br.write(first + " " + last); 


}