题目描述:按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
方法一:使用StringBuffer.append(“0”)补全
public class FenJieString { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入N的值:"); Scanner input_n = new Scanner(System.in); int n = input_n.nextInt(); System.out.println("请输入两个字符串:"); Scanner input_01 = new Scanner(System.in); String in01 = input_01.nextLine(); StringBuffer sb_01 = new StringBuffer(); sb_01.append(in01); Scanner input_02 = new Scanner(System.in); String in02 = input_02.nextLine(); StringBuffer sb_02 = new StringBuffer(); sb_02.append(in02); fenjie(sb_01, n); fenjie(sb_02, n); } public static void fenjie(StringBuffer sb, int n) { StringBuffer sbfin = new StringBuffer(); int m = 0; if (sb.length() <= n) { m = n - sb.length(); // 那个这里一定要用单独的变量记录长度 for (int i = 0; i ) { sb.append("0"); } sbfin.append(sb); } else { System.out.println(sb.toString().substring(0, n)); sbfin.append(sb.toString().substring(n, sb.length())); m = n - sbfin.length(); for (int i = 0; i ) { sbfin.append('0'); } } System.out.println(sbfin); } }
使用StringBuffer是我想到的一种方法,但是还有一种更为简单的方法。
方法二:使用库函数 Stringformat(“%0″+length+”d”,0)补全
public class FenJieString { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入N的值:"); Scanner input_n = new Scanner(System.in); int n = input_n.nextInt(); System.out.println("请输入两个字符串:"); Scanner input_01 = new Scanner(System.in); String in01 = input_01.nextLine(); Scanner input_02 = new Scanner(System.in); String in02 = input_02.nextLine(); fenjie(in01, n); fenjie(in02, n); } public static void fenjie(String sb, int n) { int m = 0; if (sb.length() <= n) { m = n - sb.length(); String s = sb; System.out.println(s + String.format("%0" + m + "d", 0)); } else { String s = sb.substring(0, n); System.out.println(s); String t = sb.substring(n, sb.length()); m = n - t.length(); System.out.println(t + String.format("%0" + m + "d", 0)); } } }
库函数Stringformat(“%0″+length+”d”,str)的解释为:length代表的是格式化后字符串的总长度,d是个占位符,会被str所替换,0是在str转化为字符后,长度达不到length的时候,前面以0 补足。因此,这个函数不仅适用于在字符串后面补全0(黑体代码),还适用于在字符串前补全0。
引申的一点是,java里面有很多封装好的函数可以使用,平时写代码要留心积累,比如“删除字符串开头的几个0”可以用方法replaceFirst()
实例:
String str = “0050580”;
System.out.println(str.replaceFirst(“^0*“, “”));
输出结果:50580