无法格式化输出

时间:2011-04-06 15:19:46

标签: java string

System.out.println("Name\tRollno\tAddress\tPercentage");
while(rs.next())
{
name=rs.getString(1);
lname=rs.getString(2);
address=rs.getString(3);
city=rs.getString(4);

    System.out.print(name+"\t\t");

  if(lname.length()<=7)
{
    System.out.print(lname+"\t\t");
}
else
    System.out.print(lname+"\t");

 if(address.length()<=7)
{
    System.out.print(address+"\t\t");
}
else
    System.out.print(address+"\t");

    System.out.println(city);
}

该数据不属于标题名称地址等。 如何格式化输出?任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

我建议使用String.format方法%15s,其中15是列的宽度,可以是您喜欢的任何内容。

使用"\t"很大程度上取决于您显示结果的方式,例如在文本编辑器中,制表符的宽度可以是用户选择的任何内容。

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#format%28java.lang.String,%20java.lang.Object...%29

答案 1 :(得分:1)

尽管String.format可以完美运行,但我还是想要使用PrintStream.printf()。 以下代码将在完美列中打印出您想要的内容。根据结果​​集中的实际值,您可能需要更改列宽度的值

int nameWidth = 15
int rollNumberWidth = 10
int adddressWidth = 25
int percentWidth = 5
String format = "%" + nameWidth + "s"
                    + "%" + rollNumberWidth + "s"
                    + "%" + addressWidth + "s"
                    + "%" + percentWidth + "s\n";
System.out.printf(format ,"Name", "Rollno", "Address", "Percentage");
while(rs.next())
{
    name = rs.getString(1);
    lname = rs.getString(2);
    address = rs.getString(3);
    city = rs.getString(4);
    System.out.printf(format , name, lname, address, city);
}