如何使用I / O打印带文件编号的文本文件?

时间:2014-09-04 01:55:02

标签: java

我正在使用Scanner打印.txt文件,我想用行号打印文件。这是我的代码。我的问题是行号没有递增。

import java.util.*;
import java.io.*;


public class List 
{
  public static void main(String[] args) throws IOException
  {
    int line =1;
    File f = new File("src/List.txt");


    Scanner sc = new Scanner(f);
    while(sc.hasNext())
    {
        int num = 1;
        System.out.print(num);
        System.out.println(sc.nextLine());
        num++;
    }
  }
}

输出:

1Bird
1Dog
1Cat
1Elephant
1Tiger
1Zebra

预期产出:

1 Bird
2 Dog
3 Cat
4 Elephant
5 Tiger
6 Zebra

3 个答案:

答案 0 :(得分:4)

int num = 1并将其放在循环的一侧......

int num = 1;
while(sc.hasNext())
{
    System.out.print(num);
    System.out.print(" "); // Separate the line number from the text
    System.out.println(sc.nextLine());
    num++;
}

这样每次循环重启时都不会重置......

答案 1 :(得分:2)

您的错误似乎是在循环体中混合linenum,但我还建议您使用格式化输出,例如 -

while(sc.hasNextLine()) {
  System.out.printf("%d %s%n", line++, sc.nextLine());
}

格式String“%d%s%n”描述一个数字,然后是空格,然后是String,然后是换行符。接下来,在line上执行后增量。最后,从nextLine()获取Scanner

答案 2 :(得分:0)

你应该删除

int num = 1;

因为它总是将num BACK设置为1,而它具有下一个。这就是行号不会增加的原因。

删除后,也删除

num++;

因为没有更多的num变量。将其替换为:

line++;

我希望这有帮助!