Как распечатать текстовый файл с номерами файлов с помощью ввода / вывода?

1

Я печатаю файл.txt с помощью Scanner и я хочу напечатать файл с номерами строк. вот мой код. Моя проблема в том, что номера строк не увеличиваются.

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
  • 1
    вы воссоздаете int num = 1; каждая итерация цикла Поместите объявление int num = 1 вне цикла, и все должно работать нормально
Теги:

3 ответа

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
    Также добавьте одну строку пробела, например, System.out.print(num + " "); разделять цифры и слова. (снаружи*)
  • 0
    @ t.pimentel Хороший совет;)
2

Ваша ошибка, кажется, смешивает line и num в теле цикла, но я бы также рекомендовал использовать форматированный вывод и что-то вроде -

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

Формат String "% d% s% n" описывает число, затем пробел, затем String а затем новую строку. Затем выполните post-increment on line. Наконец, получите nextLine() из Scanner.

0

Вы должны удалить

int num = 1;

потому что он ВСЕГДА устанавливает num BACK TO 1, пока он имеетNext. Поэтому номер строки не будет увеличиваться.

Удалив это, также удалите

num++;

потому что больше нет переменной num. Замените это следующим образом:

line++;

Надеюсь, это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню