2017-06-05 6 views
-1

新しい.txtファイルに3単語ごとに表示される単語をユーザーが入力できるようにするプログラムを作成しようとしました。コードは次のようになります。Javaコピー+愚かな結果のユーザー入力ワードプログラム

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です。それは単語「単語」を入れた後の結果です:

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); \t \t \t} else if(count == 3){ \t \t \t fw.write(str + ''); \t \t \tカウント= 0; –

-1

なぜこれが必要ですか?

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