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
Post a Comment