2013-04-26 72 views
-2

這是我的代碼之後描述的錯誤。方法在緩衝寫入器中寫入不接受參數

 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()); 
     } 
    } 
    } 

在這裏,我得到錯誤,在作家型的方法寫(字符串)不適用的參數(字符串,字符串)。

回答

1

刪除firstname之前和mobnum後的雙引號,像這樣使用:

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

你使用它就像有3個分隔的字符串的方式:

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

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

謝謝你..在上面的程序我得到另一個錯誤時,FIS的FileInputStream新=的FileInputStream( 「myfile.txt的」); BufferedReader br = new BufferedReader(fis);要求將fis更改爲Reader .. – karna 2013-04-26 06:29:35

+0

您需要BufferedReader和FileInputStream之間的InputStreamReader,如下所示:FileInputStream fis = new FileInputStream(「myfile.txt」); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); – CloudyMarble 2013-04-26 06:35:29

1

你的方法調用ISN」 t正確。使用

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

代替。

4

我很驚訝你得到確切的錯誤,如果你的代碼真的是這樣的:

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

這裏的問題是,你有3個字符串文字,所以你的代碼是一個有點像這個:

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

這簡直是無效的Java。我懷疑你實際上想:

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

現在你正在執行五個字符串之間字符串連接:

  • firstname
  • 的空間
  • lastname
  • 的空間
  • mobnum

......這是你的意圖,我相信。密切關注你的代碼是非常重要的 - 你不能在任何想要做字符串連接的地方開始添加"+

+0

我想輸出將會像這個名字lastname mobnum在同一行.. – karna 2013-04-26 06:35:44

+0

@karna:是的,這就是我給出的代碼 - 或者說,它會在同一行寫入'firstname','lastname'和'mobnum'的*值*。我假設你確實需要變量的值,而不是實際的文本「firstname lastname mobnum」? – 2013-04-26 06:41:32

0

output.write()有錯誤

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

你應該提供FileInputStream的完整路徑也

FileInputStream fis=new FileInputStream("E:/java/myfile.txt");