java转义字符的使用中出现一个很奇怪的问题,谁能帮忙解释一下,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/31 02:46:17
我在班级管理系统中Student类中重写toString方法
public String toString() {

return "学生ID:"+stuID+"\t姓名:"+stuName+"\t性别:"+gender+"\t年龄:"+age+"\t所在班级:"+classes;
}
结果我运行结果如图所示,为什么只有在学号是两位数的时候\t才可以往后跳格呀?

\t是四个字符空一次 如果是4的倍数+1时用\t就那样了
写了个方法可以参考使用。在不固定长度的字段使用输出保证能够对齐

public String toString() {

return "学生ID:"+ blankStr(10,stuID) + "姓名:"+ blankStr(18,stuName) +"\t性别:"+gender+"\t年龄:"+age+"\t所在班级:"+classes;
}

//按列宽补空格,对齐。避免使用\t对齐造成错位
//参数:列宽度,要格式化的字符串
private String blankStr(int colWidth,String str )
{
String blank = "";
int blankLen = colWidth - str.length();
for (int i = 0; i < blankLen; i++)
{
str += " ";
}
return str;
}

是这样子的.

\t这个其实很特殊.
你使用的"学生ID:1"刚好是一个表位,再\t后面的位置也不会发生变化
而"学生ID:11"刚已经超出了一个表位,接\t,会补全第二个表位
这个时候就会出现空行.

解决办法:
public String toString() {

return "学生ID:\t"+stuID+"\t姓名:"+stuName+"\t性别:"+gender+"\t年龄:"+age+&