2016-02-07 231 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); 


}