2017-06-05 55 views
-1

試圖創建一個程序,讓用戶輸入一個字,每3個字就會出現在一個新的.txt文件中。代碼如下:Java複製+用戶輸入的word程序結果很蠢

public static void main(String[] args) { 

    if(args.length != 1){ 
     System.out.println("Wrong amount of files"); 
     return; 
    } 



    try(FileReader fr = new FileReader(args[0]); FileWriter fw = new FileWriter("lorem ipsum1.txt")){ 

     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     BufferedReader br1 = new BufferedReader(fr); 
     String str; 
     char ch; 
     int count = 0; 
     str = br.readLine(); 

     do{   
      ch = (char) br1.read(); 
      if(ch == ' '){ 
       count++; 
      } 
      else if(count == 3){ 
       fw.write(" " +str + ' '); 
       count = 0; 
      } 
      else{ 
       fw.write(ch); 
      } 

     }while(br1.read() != -1); 

    }catch(IOException exc){ 

    } 

} 

文本只是一個lorem ipsum。這就是將單詞「word」後的結果:

Lrmismdlrstae,cnettraiicnltiau word prlglttroolscnettri word prsupnisedei word lsmgaaiclsobdutiislgl.Di word rtasmnqeusmxmsjsoefctra.Cacusnmgai word 

如何解決這個問題?

+0

你的問題是什麼? – KDecker

回答

0

你打電話br1.read()每兩次循環,所以它的每下探第二個字母。試試這個:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
BufferedReader br1 = new BufferedReader(fr); 
String str; 
int r; 
char ch; 
int count = 0; 
str = br.readLine(); 

while ((r = br1.read()) != -1) { 
    ch = (char) r; 
    if (ch == ' ') { 
     count++; 
    } else if (count == 3) { 
     fw.write(" " + str + ' '); 
     count = 0; 
    } else { 
     fw.write(ch); 
    } 
} 
+0

它工作。爲了避免雙倍的空間,代碼也必須這樣修改: if(ch ==''){ \t \t \t count ++; \t \t \t fw.write(ch);如果(count == 3){ \t \t \t} \t \t \t count = 0; –

-1

爲什麼你需要這個?

if(args.length != 1){ System.out.println("Wrong amount of files"); return; }