2011-09-08 7 views
0

나는 비슷한 문제가 전에 여기서 제시되었을 수 있습니다 알고 찾을 수 없습니다,하지만 난 내 자신에 대한 답을 찾을 수 없습니다. 이 서문을 위해, 나는 이미 해결 방법을 찾았지만 생성자가 실패 호출 이유를 알고 싶습니다. 실패한 코드를 보여준 다음 작동합니다.는 기호 새로운

이 코드는 txt 파일의 첫 번째 마지막으로와 ~ 중간 (정확하지 않음) 항목을보고, 간단한 파일 분석기입니다. 요구 사항 중 하나는 명령 줄에서 인수를받는 것입니다.

감사합니다.

$ javac DataAnalyzerTester.java  
DataAnalyzerTester.java:11: cannot find symbol 
symbol : constructor DataAnalyzer(java.lang.String) 
location: class DataAnalyzer 
analyze = new DataAnalyzer(args[0]);  
-----------^ 


//DataAnalyzerTester.java 

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

public class DataAnalyzerTester 
{ 
    public static void main(String[] args) 
    { 
      DataAnalyzer analyze; 
      analyze = new DataAnalyzer(args[0]); 
      //analyze.setFile(args[0]); 
      System.out.println(analyze.min()); 
      System.out.println(analyze.max()); 
      System.out.println(analyze.avg()); 
    } 
} 


//DataAnalyzer.java 
import java.util.*; 
import java.io.*; 

public class DataAnalyzer 
{ 
    public void DataAnalyzer(String fileN) 
    { 
     try 
     { 
      reader = new FileReader(fileN); 
      Scanner in = new Scanner(reader); 
      while(in.hasNextLine()) 
      { 
       fileContent.add(in.nextLine()); 
      } 
     } 
     catch(IOException exception) 
     { 
      System.out.println("File not found. Try again Dumbass."); 
     } 
    } 

    public void setFile(String fileN) 
    { 
     try 
     { 
      reader = new FileReader(fileN); 
      Scanner in = new Scanner(reader); 
      while(in.hasNextLine()) 
      { 
       fileContent.add(in.nextLine()); 
      } 
     } 
     catch(IOException exception) 
     { 
      System.out.println("File not found. Try again Dumbass."); 
     } 
    } 

    public String min() 
    { 
     return fileContent.get(0); 
    } 

    public String max() 
    { 
     return fileContent.get(fileContent.size() - 1); 
    } 

    public String avg() 
    { 
     return fileContent.get((int) fileContent.size()/2); 
    } 

    private FileReader reader; 
    private ArrayList<String> fileContent = new ArrayList<String>(); 
} 

은 기본적으로 위의 버전이 작동하지 않습니다,하지만 난 생성자와 같은 일을 할 수있는 setFile 방법을 추가 :

에 실패했습니다. 내 질문에 다음과 같은 이유로 생성자를 호출 할 수 없습니다. 다시 한번 감사드립니다.

답변

4

없이 무효 - 컴파일러는 생성자로 인식하는 방법 클래스와 일치하는 이름을 가진 결합이있다. 그래서 대신 :

public void DataAnalyzer(String fileN) 

쓰기 :

public DataAnalyzer(String fileN) 

더 많은 정보 : http://download.oracle.com/javase/tutorial/java/javaOO/constructors.html

+0

감사합니다. 가장 도움이됩니다. 나는 C++에서 합법적이지 않은 동안 조금 지체되었다고 느낀다. 다시 한번 감사드립니다. – on2valhalla

+0

내 하루에 저장된 : D – Turion

2

public void DataAnalyzer(String fileN) // 생성자는 반환 유형을 지정하지 않아야 여기

1

당신은 생성자를 정의하고 및 생성자는 어떤 반환 형식을지지 않습니다. 그래서

public void DataAnalyzer(String fileN) 

당신이 그것을 가지고 희망

public DataAnalyzer(String fileN) 

대신에 쓰기 ??