尝试创建一个程序,让用户每隔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
如何解决这个问题?
答案 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);
}
}