2014-03-13 63 views
0

我在添加「%:」到替換髮生的行時遇到了問題。該程序遍歷整個字母表,並將所有小寫字母轉換爲大寫字母,大寫字母轉換爲小寫字母。然後,在文件的結尾,它應該我怎樣才能每行只能附加一次替換?

"%: a: x:b: y....z: z" 

其中x,y和z是多少替換髮生在每一行添加。我如何才能將「%:」添加到具有替換項的行中?另外請注意,如果有替換,每行只有一個「%:」。謝謝。

File file = new File("old.tex"); 
    Scanner scanner = new Scanner(file); 
    PrintWriter writer = new PrintWriter("new.tex"); 
    while(scanner.hasNextLine()){ 
     int numberlc; 
     int numberuc; 
    String line = scanner.nextLine(); 
    line=line+ "%:"; 
    for(char ch='a';ch<='z';ch++){ 
     numberlc=numberOccurances(line, ch); 
     char upperch=Character.toUpperCase(ch); 
     numberuc=numberOccurances(line, upperch); 
     for(int y=0; y<line.length(); y++){ 
      if(line.charAt(y)==ch) 
       line=line.substring(0,y) + upperch + line.substring(y+1); 
      else if(line.charAt(y)==upperch) 
       line=line.substring(0,y) + ch + line.substring(y+1); 
     } 
     if(numberlc>0) 
      line=line + ch + " " + numberlc + ":"; 
     if(numberuc>0) 
      line=line + upperch + " " + numberuc + ":"; 
    } 
    writer.println(line); 
} 
writer.close() 
+0

請將您的輸入,你的輸出,和你預期的輸出。 – MirroredFate

回答

0

我會建議保持你的添加單獨,直到你完成該行。

事情是這樣的:

StringBuilder changes = new StringBuilder("%: "); 
for(char ch='a';ch<='z';ch++){ 
    numberlc=numberOccurances(line, ch); 
    char upperch=Character.toUpperCase(ch); 
    numberuc=numberOccurances(line, upperch); 
    for(int y=0; y<line.length(); y++){ 
     if(line.charAt(y)==ch) 
      line=line.substring(0,y) + upperch + line.substring(y+1); 
     else if(line.charAt(y)==upperch) 
      line=line.substring(0,y) + ch + line.substring(y+1); 
    } 
    if(numberlc>0) 
     changes.append(ch + " " + numberlc + ":"); 
    if(numberuc>0) 
     changes.append(upperch + " " + numberuc + ":"); 
} 
if (changes.length() > 3) 
    line += changes.toString(); 
writer.println(line); 

注:此代碼是沒有測試