2014华为机试第一题:字符串补0输出

题目描述:按要求分解字符串,输入两个数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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*