Java拷贝+用户输入word程序,带有愚蠢的结果

时间:2017-06-05 16:58:10

标签: java

尝试创建一个程序,让用户每隔3个单词放置一个新的.txt文件。这是代码:

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 

如何解决这个问题?

1 个答案:

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