Java вывод на печать текстового файла и проверка первого символа - PullRequest
0 голосов
/ 10 февраля 2020

Я думаю, что закомментированный раздел моего кода работает. Моя проблема заключается в том, что, когда я печатаю строку «s», я получаю только последнюю строку моего текстового файла.

import java.io.File; 
import java.util.Scanner; 
public class mainCode {
    public static void main(String[] args)throws Exception 
      { 
          // We need to provide file path as the parameter: 
          // double backquote is to avoid compiler interpret words 
          // like \test as \t (ie. as a escape sequence) 
          File file = new File("F:\\Java Workspaces\\Workspace\\Files\\file.txt"); 

            Scanner sc = new Scanner(file); 
            String s = new String("");

            while (sc.hasNextLine())
                s = sc.nextLine();
                System.out.println(s);
//                if (s.substring(0,1).equals("p") || s.substring(0,1).equals("a") ){
//                    System.out.println(s);
//                }
//                else{
//                    System.out.println("Error File Format Incorrect");
//                }
      }
}

Выходные данные - это просто «a192», строки перед «a191» и «a190»

1 Ответ

0 голосов
/ 10 февраля 2020

Ваш отступ делает его похожим на то, что ваш while выполняет несколько операторов, но это не так. Используйте фигурные скобки, чтобы заключить операторы, которые вы хотите выполнить как блок.

        while (sc.hasNextLine())
            s = sc.nextLine();
        System.out.println(s);  // proper indentation

Вероятно, что вы хотите:

  while( sc.hasNextLine() ) {
     s = sc.nextLine();
     System.out.println( s );
  }

(Мне пришлось добавить это в свою среду IDE, чтобы найти его. Мой IDE пометил эту вторую строку как «Запутанный отступ» для меня. Хорошие IDE делают это.)

...