为什么在printf左对齐碰到中文,或者中文加数字,中文加字母就没法左对齐。
这个是部分代码

这个是运行结果,求大神帮忙啊。

------解决方案--------------------
我想了一个思路给你:代码也写在下面.到时你自己优化一下代码.
1.我给每个显示的参数一个合理固定的显示长度.例如我代码里是十位,
2.这个显示长度如果你的字符不足.将用空格填充.(超过我没有做.你自己优化)
3.注意:显示长度是区分中文字符与英文字符的.
一.数字与字母字符占位空格.一空格等于一位数字或字母
二.中文字符占位空格,一中文长度等于五空格
4.这段代码有个BUG是中文字符参数(对象名)必须全是中文字符,]数字与字母字符参数必须全是数字与字母字符,不能混合.
这个BUG你自己想想办法.错误例子:<博时444精选C >这里不能混合数字与字母字符
package testString;
public class lord {
static int placeholderNum = 10; //给定显示长度
static String placeholder = " ";//数字与字母字符占位空格.一空格等于一位数字或字母
static String cnplaceholder = " ";//中文字符占位空格,一中文长度等于五空格
public static void main(String[] args) {
String s1 = "1bb1";
String s2 = "华安创新于";
String s3 = "22daeg55";
String s4 = "博时精选股票是进";
StringBuffer a1 = strHandle(s1);
a1.append(cnstrHandle(s2));
a1.append(strHandle(s1));
System.out.println(a1);
StringBuffer a2 = strHandle(s3);
a2.append(cnstrHandle(s4));
a2.append(strHandle(s3));
System.out.println(a2);
//在CMD控制台下一个中文字符等于五个空格,实验示例
System.out.println("介不失时机");
System.out.println("介不"+cnplaceholder+"时机");
}
//注:StringBuffer用来专业做字符拼接,节省内存.请参见StringBufferAPI;
/*
* 中文字符处理方法,我给定每位显示中文字符位属性10的位置数.剩下用中文字符占位空格填充.
*/
public static StringBuffer cnstrHandle(String string){
StringBuffer temp = new StringBuffer(string);
for (int i=string.length();i<placeholderNum;i++){
temp.append(cnplaceholder);
}
return temp;
}
/*
* 数字与字母字符处理方法,我给定每位显示数字与字母字符位属性10的位置数.剩下用数字与字母字符占位空格填充.
*/
public static StringBuffer strHandle(String string){
StringBuffer temp = new StringBuffer(string);
for (int i=string.length();i<placeholderNum;i++){
temp.append(placeholder);
}
return temp;
}
}
如有不懂,你再问我.