一、背景
大家在初学Java的时候一般都是采用Eclipse或其他IDE环境,中英文混合时的对齐问题想必都或多或少地困扰过大家,比如下面的代码和在Eclipse中的显示效果:
Java字符串格式构建代码:
public String toString() {
String str = String.format("%-8s%-4d\t%-8s\t%.2f", name, level, getLevelName(), face);
return str;
}
跟我们设想的并不一样。网上有个比较简单的解决方案,就是在%s后添加\t:
public String toString() {
String str = String.format("%-8s\t%-4d\t%-8s\t%.2f", name, level, getLevelName(), face);
return str;
}
效果如下:
好了,对于没有强迫症的小伙伴,本文结束,大家按照上面的解决方案修改代码即可。
二、使用JNI调用C/C++实现中英文对齐
JNI,即Java Native Interface,Java本地接口。是Java平台提供的调用本地C/C++代码进行互操作的API。
2.1 本次示例所用的代码如下:
/**
* 后宫佳丽
* @author 老九学堂·窖头
*
*/
public class Beauty {
private static String[] levelNames = {
"秀女", "答应", "常在", "贵人", "嫔", "妃", "贵妃", "皇贵妃", "皇后", "皇太后", "太皇太后", "太皇太后还要往后"};
private String name;
private int level;
private String levelName;
private double face; //颜值,可以通过图像AI获取
public Beauty(String name, int level, double face) {
this.name = name;
setLevel(level);
this.levelName = getLevelName();
this.face = face;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
if(level < 0 || level > levelNames.length) {
this.level = 1;
return;
}
this.level = level;
}<