方法在bufferedwriter中写入不接受参数

时间:2013-04-26 06:23:09

标签: java

这是我的java代码,其中我得到代码后描述的错误。

     import java.util.Scanner;
     import java.util.StringTokenizer;
     import java.io.*;
       import java.util.*;
       public class FileDemo {
public static void main(String args[]){
      Scanner sc=new Scanner(System.in);
      System.out.println("Enter no of persons");
      int person=sc.nextInt();
      File myfile = new File("E:/java/myfile.txt");
      BufferedWriter output = new BufferedWriter(new FileWriter(myfile));
     for(int i=0;i<person;i++)
     {

         System.out.println("Enter Firstname");
         String firstname=sc.next();

         System.out.println("Lastname");
         String lastname=sc.next();
         System.out.println("mobnum");
         int mobnum=sc.nextInt();

         output.write("+firstname+" "+lastname+" "+mobnum+");            
     }
     output.close();
      /*** here change fis to Reader ***/
   FileInputStream fis=new FileInputStream("myfile.txt");
   BufferedReader br=new BufferedReader(fis);
     int i=1;
   String str=null;
        while((str=br.readLine())!=null)
      {

    System.out.println("Person"+i);
    StringTokenizer st=new StringTokenizer(str,"");

    System.out.println("FirstName"+st.nextToken());
    System.out.println("lastname"+st.nextToken());
    System.out.println("country"+st.nextToken());
      }
     }
    }

这里我得到错误,类型Writer中的方法write(String)不适用于参数(String,String)。

4 个答案:

答案 0 :(得分:4)

如果你的代码看起来像这样,我很惊讶你得到了确切的错误:

output.write("+firstname+" "+lastname+" "+mobnum+");

这里的问题是你有三个字符串文字,所以你的代码有点像这样:

output.write("x" "y" "z")

这只是无效的Java。我怀疑你实际上想要

output.write(firstname + " " + lastname + " " + mobnum);

现在,您正在五个字符串之间执行字符串连接:

  • firstname
  • 空格
  • lastname
  • 空格
  • mobnum

......我相信这是你的意图。密切关注您的代码非常重要 - 您不能只在任何想要进行字符串连接的地方开始添加"+

答案 1 :(得分:1)

删除firstname之前和mobnum之后的双引号,请按照以下方式使用:

output.write(firstname + " " + lastname + " " + mobnum);

你使用它的方式就像有三个分开的字符串:

"+firstname+" "+lastname+" "+mobnum+" 

equals to => "string1" "string2" "string3"

答案 2 :(得分:1)

您的方法调用不正确。使用

output.write(firstname+" "+lastname+" "+mobnum);

代替。

答案 3 :(得分:0)

您的output.write()有错误

output.write(firstname+" "+lastname+" "+mobnum);

您应该在FileInputStream

中提供完整路径
FileInputStream fis=new FileInputStream("E:/java/myfile.txt");