将输出写入文本文件

时间:2016-02-07 07:53:54

标签: java

所以我试图创建一个程序,以First和Last Name的形式接收输入,然后将其打印到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();
} 

3 个答案:

答案 0 :(得分: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();
    }

作家将自动关闭。

答案 1 :(得分:0)

问题是在关闭流之前,您正在关闭方法体。所以&#39; output.close();&#39;在方法之外并进入课堂体内。

您的新代码应如下所示:

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的文档来检查什么方法抛出什么异常,这样你就可以捕获它们并像上面那样处理它们,或者只是传递它们。

此外,使用诸如eclipse之类的IDE会在编码时实时显示所有语法错误,因此您不必每次都编译以检查语法是否正确。此外,大多数IDE通常都会出现针对特定错误的过度解决方案。除此之外,它会警告你什么方法抛出什么异常,所以你可以抓住它们。

答案 2 :(得分:-2)

试试这个

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


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


}