자바에서 특정 문자열 뒤에 줄을 인쇄하는 방법은 무엇입니까?

히드라

특정 장의 모든 줄을 인쇄하려고합니다. 이것이 제가 지금까지 가지고있는 것입니다. 책 이름과 장 번호를 사용자가 입력 한 다음 문자열을 분할하여 프로그램이 사용할 별도의 데이터 유형으로 저장 한 다음 메서드를 호출하는 주요 방법입니다.

    private static List<String> list = new LinkedList<String>();

    public static void main(String[] args)  throws Exception{

      //findDetailsByWordSearch();
      Scanner scnr = new Scanner(System.in);
      System.out.println("Please enter the name of the file you wish to search and the chapter    number");
      String input = scnr.nextLine();
      String parts[] = input.split(" ");
      int chapterNumber = Integer.parseInt(parts[parts.length -1]);
        String bookName = "";
        for (int i = 0; i < parts.length - 1; i++){
            bookName += parts[i];
        }
      getChapter(bookName, chapterNumber);

    }    

다음은 사용자의 입력을 사용하여 찾고있는 책을 찾고, 텍스트를 배열 목록에 저장하고 장 번호도 가져 오는 방법입니다. 그러나 현재 코드는 해당 한 줄만 인쇄하지만 인쇄하려면이 방법이 필요합니다. "CHAPTER"+ chapterNumber 다음의 모든 행은 장의 끝을 나타내는 공백이 발생할 때까지 가리 킵니다.

   public static void getChapter(String bookName, int chapterNumber) throws Exception{  
      String textExtension = ".txt";
      String fileContent;

      try {
          BufferedReader reader = new BufferedReader(new FileReader(bookName +textExtension));
            while ((fileContent = reader.readLine()) != null) {
                list.add(fileContent);    
            }               
            for(int i = 0; i < list.size(); i++){
                String lines = list.get(i);
                if(lines.equals("CHAPTER "+chapterNumber)){
                    System.out.println(lines);      
                }
        }

    } catch (Exception e) {

        e.printStackTrace();
    }
  }

장은 다음과 같은 형식을 따릅니다. CHAPTER 1 (여러 줄에있는 텍스트) 뒤에 공백이있는 CHAPTER 2 (여러 줄에있는 텍스트) 등등 ... 그래서 문제는 장 뒤와 뒤에있는 텍스트를 어떻게 인쇄 할 것인가입니다. 예를 들어, 사용자가 'Harry 4'를 검색하는 경우 시스템은 harry 책을 찾아서 배열 목록으로 텍스트를 읽은 다음 CHAPTER 4를 찾아서 CHAPTER 5까지 해당 장의 텍스트를 인쇄합니다. 감사합니다!

RealSkeptic

사실, 당신은 라인을 List전혀 읽을 필요가 없습니다 . 전체 작업이 단순히 인쇄하는 것이라면 각 줄을 읽고이 줄이 조건에 따라 인쇄 할 줄인지 결정한 다음 인쇄하면됩니다.

이것은 특히 책이 긴 경우 많은 메모리를 절약합니다.

그래서 어떻게하나요? 로 시작 CHAPTER n하고 빈 줄로 끝나는 줄을 인쇄하려는 것을 알고 있습니다 . 따라서 한 줄을 읽을 때 "이 줄이 장의 일부입니까?"라고 자문 해보십시오. 분명히, 당신이 CHAPTER n아직 그 줄을 읽지 않았다면 그것은 아닙니다. 을 읽은 후에 CHAPTER n는 행이 비어 있지 않으면 대답은 예입니다.

그래서 당신은 어떤 상태에 있는지를 나타내는 깃발을 유지합니다 : 읽었 CHAPTER n는지 여부. 처음에는 플래그가 거짓입니다.

읽은 각 줄에 대해 :

  • "아직 해당 줄을 읽지 않음"상태 인 경우 :
    • 현재 줄이 CHAPTER n. 그렇다면 플래그를 변경하십시오.
  • "read that line"상태 인 경우 :
    • 현재 줄이 비어 있는지 확인하십시오. 그렇다면 파일을 닫고 돌아가십시오.
    • 그렇지 않은 경우 라인을 인쇄하십시오.

이것은 한 번에 하나씩 입력을받는 "상태 머신"으로 알려져 있지만 상태에 따라 동작이 다르며 해당 동작에는 한 상태에서 다른 상태로의 이동이 포함될 수 있습니다.

  boolean inChapter = false;

  try (
      BufferedReader reader = new BufferedReader(new FileReader(bookName +textExtension));
  ) {
      while ((fileContent = reader.readLine()) != null) {

            if ( inChapter ) {
                if ( fileContent.isEmpty() ) {
                    return;
                }
                System.out.println( fileContent );
            } else {
                if ( fileContent.equals("CHAPTER "+chapterNumber ) {
                   inChapter = true;
                   System.out.println( fileContent );
                }
            }
      }               
  } catch (Exception e) {

    e.printStackTrace();
  }

파일을 자동으로 닫는 "리소스로 시도"를 사용했습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 방법에서 배열의 특정 지점을 인쇄하는 방법은 무엇입니까? #자바

분류에서Dev

쉘에서 특정 단어 앞에 오는 문자열을 인쇄하는 방법은 무엇입니까?

분류에서Dev

bash에서 특정 단어 앞에 문자열을 인쇄하는 방법은 무엇입니까?

분류에서Dev

특정 문자 뒤의 문자열에서 공백을 제거하는 방법은 무엇입니까?

분류에서Dev

특정 문자 뒤에 문자열을 출력하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 특정 문자열을 찾은 후 모든 줄을 인쇄하는 방법은 무엇입니까?

분류에서Dev

특정 문자열을 포함하는 출력에서 줄을 제거하는 방법은 무엇입니까?

분류에서Dev

특정 문자열을 포함하는 출력에서 줄을 제거하는 방법은 무엇입니까?

분류에서Dev

Java 특정 문자열 뒤의 특정 줄을 찾는 방법은 무엇입니까?

분류에서Dev

Java 특정 문자열 뒤의 특정 줄을 찾는 방법은 무엇입니까?

분류에서Dev

파일의 특정 문자열 뒤에 파일 내용을 삽입하는 방법은 무엇입니까?

분류에서Dev

Swift에서 문자열 줄을 정렬하는 방법은 무엇입니까?

분류에서Dev

특정 문자열에서 모든 줄을 자르는 방법은 무엇입니까?

분류에서Dev

특정 '문자열'을 찾고 전체 줄을 인쇄하는 방법은 무엇입니까?

분류에서Dev

줄 어딘가에 줄 중 하나에서 특정 문자열 뒤에 텍스트 파일에서 숫자를 얻는 방법은 무엇입니까?

분류에서Dev

텍스트 파일 내에서 특정 문자열 뒤에 빈 줄을 추가하는 방법은 무엇입니까?

분류에서Dev

임계 값보다 큰 특정 문자열 뒤에 숫자가있는 줄을 구문 분석하는 방법은 무엇입니까?

분류에서Dev

특정 문자열이 포함 된 줄을 인쇄하는 방법은 무엇입니까?

분류에서Dev

Rails 문자열에서 특정 값을 얻는 방법은 무엇입니까?

분류에서Dev

NSString에서 특정 문자열을 얻는 방법은 무엇입니까?

분류에서Dev

문자열에서 특정 값을 읽는 방법은 무엇입니까?

분류에서Dev

문자열에서 특정 값을 얻는 방법은 무엇입니까?

분류에서Dev

.bat를 사용하여 txt에서 특정 문자열을 찾고 바꾸는 방법은 무엇입니까?

분류에서Dev

파이썬에서 문자열 청크로 인쇄 형식을 지정하는 방법은 무엇입니까?

분류에서Dev

더 큰 문자열에서 특정 패턴의 문자열을 감지하는 방법은 무엇입니까?

분류에서Dev

C ++에서 정수 뒤에 문자열을 입력하는 방법은 무엇입니까?

분류에서Dev

SQL Select 문에서 List의 특정 문자열을 확인하는 방법은 무엇입니까?

분류에서Dev

postgres에서 특정 단어 뒤에 나타나는 특정 하위 문자열을 선택하는 방법은 무엇입니까?

분류에서Dev

특정 패턴 뒤에 줄을 삽입하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    다른 방법에서 배열의 특정 지점을 인쇄하는 방법은 무엇입니까? #자바

  2. 2

    쉘에서 특정 단어 앞에 오는 문자열을 인쇄하는 방법은 무엇입니까?

  3. 3

    bash에서 특정 단어 앞에 문자열을 인쇄하는 방법은 무엇입니까?

  4. 4

    특정 문자 뒤의 문자열에서 공백을 제거하는 방법은 무엇입니까?

  5. 5

    특정 문자 뒤에 문자열을 출력하는 방법은 무엇입니까?

  6. 6

    파이썬에서 특정 문자열을 찾은 후 모든 줄을 인쇄하는 방법은 무엇입니까?

  7. 7

    특정 문자열을 포함하는 출력에서 줄을 제거하는 방법은 무엇입니까?

  8. 8

    특정 문자열을 포함하는 출력에서 줄을 제거하는 방법은 무엇입니까?

  9. 9

    Java 특정 문자열 뒤의 특정 줄을 찾는 방법은 무엇입니까?

  10. 10

    Java 특정 문자열 뒤의 특정 줄을 찾는 방법은 무엇입니까?

  11. 11

    파일의 특정 문자열 뒤에 파일 내용을 삽입하는 방법은 무엇입니까?

  12. 12

    Swift에서 문자열 줄을 정렬하는 방법은 무엇입니까?

  13. 13

    특정 문자열에서 모든 줄을 자르는 방법은 무엇입니까?

  14. 14

    특정 '문자열'을 찾고 전체 줄을 인쇄하는 방법은 무엇입니까?

  15. 15

    줄 어딘가에 줄 중 하나에서 특정 문자열 뒤에 텍스트 파일에서 숫자를 얻는 방법은 무엇입니까?

  16. 16

    텍스트 파일 내에서 특정 문자열 뒤에 빈 줄을 추가하는 방법은 무엇입니까?

  17. 17

    임계 값보다 큰 특정 문자열 뒤에 숫자가있는 줄을 구문 분석하는 방법은 무엇입니까?

  18. 18

    특정 문자열이 포함 된 줄을 인쇄하는 방법은 무엇입니까?

  19. 19

    Rails 문자열에서 특정 값을 얻는 방법은 무엇입니까?

  20. 20

    NSString에서 특정 문자열을 얻는 방법은 무엇입니까?

  21. 21

    문자열에서 특정 값을 읽는 방법은 무엇입니까?

  22. 22

    문자열에서 특정 값을 얻는 방법은 무엇입니까?

  23. 23

    .bat를 사용하여 txt에서 특정 문자열을 찾고 바꾸는 방법은 무엇입니까?

  24. 24

    파이썬에서 문자열 청크로 인쇄 형식을 지정하는 방법은 무엇입니까?

  25. 25

    더 큰 문자열에서 특정 패턴의 문자열을 감지하는 방법은 무엇입니까?

  26. 26

    C ++에서 정수 뒤에 문자열을 입력하는 방법은 무엇입니까?

  27. 27

    SQL Select 문에서 List의 특정 문자열을 확인하는 방법은 무엇입니까?

  28. 28

    postgres에서 특정 단어 뒤에 나타나는 특정 하위 문자열을 선택하는 방법은 무엇입니까?

  29. 29

    특정 패턴 뒤에 줄을 삽입하는 방법은 무엇입니까?

뜨겁다태그

보관