java - Why is this not converting all instances? -


i not know why code not converting instances of 'm' 'm' , instances of 'm' 'm'. example, should converting to:

report 98-17, faculty of technical mathematics , informatics,%:m 2:m 1: 

when converting to:

report 98-17, faculty of technical mathematics , informatics,%:m 2:m1: 

thanks.

public static int numberoccurances(string l, char f){      int count=0;      for(int x=0; x<l.length();x++){          if(l.charat(x)==f)              count++;         }     return count;  }  public static void main(string[] args) throws filenotfoundexception, unsupportedencodingexception {     file file = new file("old.txt");     scanner scanner = new scanner(file);     printwriter writer = new printwriter("new.txt", "utf-8");     while(scanner.hasnextline()){     string line = scanner.nextline();     int numberm=numberoccurances(line, 'm');     int numberm = numberoccurances(line, 'm');     for(int y=0; y<line.length(); y++){         if(line.charat(y)=='m'){             line=line.substring(0,y) + 'm' + line.substring(y+1);         }         if(line.charat(y)=='m'){             line=line.substring(0,y) + 'm' + line.substring(y+1);         }     }     if(numberm>0&&numberm>0)         line=line + "%:m " + numberm + ":m" + numberm + ":";     if(numberm>0&&numberm==0)         line=line + "%:m " + numberm + ":";     if(numberm>0&&numberm==0)         line=line + "%:m " + numberm + ":";     writer.println(line); }     writer.close(); } 

because don't use else, when modified m m, second if detects m , reverses effect.

so modify

if(line.charat(y)=='m'){     line=line.substring(0,y) + 'm' + line.substring(y+1); } if(line.charat(y)=='m'){//pay attention line     line=line.substring(0,y) + 'm' + line.substring(y+1); } 

into

if(line.charat(y)=='m'){     line=line.substring(0,y) + 'm' + line.substring(y+1); } else if(line.charat(y)=='m'){//pay attention line     line=line.substring(0,y) + 'm' + line.substring(y+1); } 

however recommend regex type of things. makes life easier , increase performance.


Comments