Я печатаю файл.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
Возьмите 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++;
}
Таким образом, он не будет сбрасываться каждый раз, когда цикл перезапускается...
System.out.print(num + " ");
разделять цифры и слова. (снаружи*)
Ваша ошибка, кажется, смешивает 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
.
Вы должны удалить
int num = 1;
потому что он ВСЕГДА устанавливает num BACK TO 1, пока он имеетNext. Поэтому номер строки не будет увеличиваться.
Удалив это, также удалите
num++;
потому что больше нет переменной num. Замените это следующим образом:
line++;
Надеюсь, это поможет!