스캐너를 사용하여 파일 읽기 : Java의 읽기 파일에 스캐너를 사용할 때 오류가 발생하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/766846

  •  12-09-2019
  •  | 
  •  

문제

이 예제는 스캐너를 사용하여 파일을 라인별로 읽는 것을 보여줍니다 (쓰기 작업을 수행하지 않음) 컴파일을 시도 할 때 오류가 발생하는 이유를 모르겠습니다. 누군가 나에게 이유를 설명 할 수 있습니까?. 제 프로그램을 실행하기 위해 jcreatorle 및 jdk 1.6을 사용하고 있습니다.

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

public final class File_read {

  public static void main(String... aArgs) throws FileNotFoundException {
    ReadWithScanner parser = new ReadWithScanner("C:\\Temp\\test.txt");
    parser.processLineByLine();
    log("Done.");
  }

  /**
  * @param aFileName full name of an existing, readable file.
  */
  public ReadWithScanner(String aFileName){
    fFile = new File(aFileName);  
  }

  /** Template method that calls {@link #processLine(String)}.  */
  public final void processLineByLine() throws FileNotFoundException {
    Scanner scanner = new Scanner(fFile);
    try {
      //first use a Scanner to get each line
      while ( scanner.hasNextLine() ){
        processLine( scanner.nextLine() );
      }
    }
    finally {
      //ensure the underlying stream is always closed
      scanner.close();
    }
  }

  /** 
  * Overridable method for processing lines in different ways.
  *  
  * <P>This simple default implementation expects simple name-value pairs, separated by an 
  * '=' sign. Examples of valid input : 
  * <tt>height = 167cm</tt>
  * <tt>mass =  65kg</tt>
  * <tt>disposition =  "grumpy"</tt>
  * <tt>this is the name = this is the value</tt>
  */
  protected void processLine(String aLine){
    //use a second Scanner to parse the content of each line 
    Scanner scanner = new Scanner(aLine);
    scanner.useDelimiter("=");
    if ( scanner.hasNext() ){
      String name = scanner.next();
      String value = scanner.next();
      log("Name is : " + quote(name.trim()) + ", and Value is : " + quote(value.trim()) );
    }
    else {
      log("Empty or invalid line. Unable to process.");
    }
    //(no need for finally here, since String is source)
    scanner.close();
  }

  // PRIVATE //
  private final File fFile;

  private static void log(Object aObject){
    System.out.println(String.valueOf(aObject));
  }

  private String quote(String aText){
    String QUOTE = "'";
    return QUOTE + aText + QUOTE;
  }
} 

이것이 실행 된 결과입니다.

--------------------Configuration: <Default>--------------------
C:\Users\administrador\Documents\File_read.java:15: invalid method declaration; return type required
  public ReadWithScanner(String aFileName){
         ^
1 error

Process completed.
도움이 되었습니까?

해결책

그 코드를 들어 올렸을 때 여기 :-), 당신은 클래스로 이름을 바꾸지 만 생성자는 아닙니다. 생성자 만 반환 유형을 가질 수 없습니다.

클래스의 이름을 바꾸거나 생성자 이름을 바꾸는 것이 좋습니다.

나는 이것이 숙제가 아니기를 바랍니다. 그것이 서있는 것처럼, 당신의 교육자는 표절을 쉽게 증명할 수 있습니다. 최소한 변수 이름과 클래스 이름을 변경해야합니다. 클래스의 메소드 순서를 변경하는 것을 포함하여 약간의 이름도 개조 할 수도 있습니다.

그것은 숙제 인 경우입니다. 그게 아니야? :-)

다른 팁

"readwithscanner"생성자는 클래스의 이름과 일치해야합니다 ( "File_Read")

public File_read(String aFileName){
    fFile = new File(aFileName);  
}

귀하의 수업은 이름이 있습니다 File_read 그리고 당신의 생성자는 이름이 지정됩니다 ReadWithScanner. 경고는 생성자의 클래스와 동일하게 명명되어야한다는 것입니다.

클래스의 이름은 file_read이므로 생성자 이름은 file_read이어야하지만 이름을 readwithscanner로 주었으므로 불만입니다. 컴파일러는 메소드 이름을 생각하여 리턴 유형을 기대합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top