行号补齐的问题,请教怎样做最好

比如,读取一个txt文本并显示行号,
如果有10行,则单数行要显示01、02...
如果有100行,则单数行001、002、003...双数行011、012、013...
如果有1000行...
如果有10000行...

应该怎样做?

  1. 可以先计算出文件总的行数,比如10000. 记下最大行数字的长度,在这里为5.

  2. 然后比较当前行数的数字长度与最大行数字长度,补上N个0,N等于长度差。

可以写一个补0的方法,下面就是一个例子:

[code="java"]public class RowNumTest {

public static void main(String[] args) {

    /**
     * 假设文件有100行,那么记为最大行数字的长度为3.
     * 下面是一个输出前10行,对齐的行编号。
     * 001
     * 002
     * 003
     * ...
     * 09
     * 010
     */
    for(int i=1;i<11;i++)
    {
        System.out.println(appendLeadingZeros(i,3));
    }
}

/**
 * 
 * @param currentRowNumber 当前行
 * @param maxLength 最大行数字的长度
 * @return 返回一个与最大行数对齐的行编号。当前行数数字长度小于最大行数字长度的,
 * 则在前面补上0
 */
public static String appendLeadingZeros(int currentRowNumber, int maxLength)
{
    StringBuilder sb = new StringBuilder();

    String value = String.valueOf(currentRowNumber);
    int lengthDiff = maxLength - value.length();
    for(int i =0 ;i <lengthDiff;i++ )
    {
        sb.append(0);
    }
    return sb.append(currentRowNumber).toString();
}

}[/code]