Using java 8 , a more concise and compact version
public String pad_num(String line, String operator){ String str[] = line.split(Pattern.quote(operator)); char []buff = new char[Math.abs(str[0].length()-str[1].length())]; Arrays.fill(buff, '0'); if(str[0].length()>str[1].length()){ return String.join(operator, str[0], new StringBuilder(String.valueOf(buff)).append(str[1])); }else{ return String.join(operator, new StringBuilder(String.valueOf(buff)).append(str[0]), str[1]); } }
If you do not have java8, use this implementation of your method
public String pad_num(String line, String operator){ String str[] = line.split(Pattern.quote(operator)); StringBuilder left = new StringBuilder(str[0]); StringBuilder right = new StringBuilder(str[1]); left = left.reverse(); right = right.reverse(); int len1 = left.length(); int len2 = right.length(); if(len1>len2){ while(len1!=len2){ right.append("0"); len1--; } }else{ while(len1!=len2){ left.append("0"); len2--; } } return left.reverse().toString()+operator+right.reverse().toString(); }
And call this method like
String result = pad_num("123456+1324563", "+"); String result = pad_num("123456-1324563", "-");
Edit:
The reason ArrayIndexOutOfBoundsException is a method call with mismatch arguments, e.g.
pad_num("123456-1324563", "+"); // - in line and + in operator
or
pad_num("123456+1324563", "-"); // + in line and - in operator
source share