找不到符号新
问题描述:
我知道类似的问题可能已经在这里提出过,但我无法自己找到答案。为了说明这一点,我已经找到了解决方法,但想知道为什么调用构造函数失败。我将显示失败的代码,然后工作。找不到符号新
此代码是一个简单的文件分析器,它报告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方法做同样的事情的构造。那么我的问题是为什么我不能以这种方式调用构造函数?再次感谢。
答
构造函数不应该指定返回类型 - 这与匹配类的名称结合是编译器如何识别它作为一个构造函数。因此,而不是:
public void DataAnalyzer(String fileN)
写:
public DataAnalyzer(String fileN)
的更多信息:http://download.oracle.com/javase/tutorial/java/javaOO/constructors.html
答
public void DataAnalyzer(String fileN)
//无缺这里
答
要定义构造函数和构造函数和不带任何返回类型。所以写
public DataAnalyzer(String fileN)
而不是
public void DataAnalyzer(String fileN)
希望你得到它?
谢谢。最有用的。我感觉有点迟钝,而这在C++中甚至不合法。再次感谢。 – on2valhalla
保存我的一天:D – Turion