【发布时间】:2016-02-09 07:23:10
【问题描述】:
我有一个非常愚蠢的问题,让我非常头疼。
我定义了一个搜索 ArrayList 以查找邮政编码的方法:
public ZipCode findZip (int zip) {
ZipCode aZip = new ZipCode(0);
for(int i = 0; i < zips.size(); i++) {
if(zips.get(i).getZipCode() == zip)
aZip = zips.get(i);
else
aZip = null; }
return aZip; }
...但是,我不能一辈子这样称呼它。每次调用它时,它都会给我“找不到符号”错误,无论我使用什么对象或输入什么参数。
到目前为止的整个程序(直到我弄清楚它才能完成):import java.util.*;
import java.io.*;
import java.lang.Math;
public class ZipCodeDatabase {
//Field
private ArrayList<ZipCode> zips;
//Constructor
public ZipCodeDatabase () {
zips = new ArrayList<ZipCode> ();
}
//Mutator Method
public void readZipCodeData(String filename) {
Scanner inFS = null;
FileInputStream fileByteStream = null;
try{
// open the File and set delimiters
fileByteStream = new FileInputStream("zipcodes.txt");
inFS = new Scanner(fileByteStream);
inFS.useDelimiter("[,\r\n]+");
// continue while there is more data to read
while(inFS.hasNext()) {
//read in all input
int aZip = inFS.nextInt();
String aCity = inFS.next();
String aState = inFS.next();
double aLat = inFS.nextDouble();
double aLon = inFS.nextDouble();
//Create and add new zipcode
ZipCode newZip = new ZipCode(aZip, aCity, aState, aLat, aLon);
zips.add(newZip);
}
fileByteStream.close();
// Could not find file
}catch(FileNotFoundException error1) {
System.out.println("Failed to read the data file: " + filename);
// error while reading the file
}catch(IOException error2) {
System.out.println("Oops! Error related to: " + filename);
}
}
//Accessor Methods
public ZipCode findZip (int zip) {
ZipCode aZip = new ZipCode(0);
for(int i = 0; i < zips.size(); i++) {
if(zips.get(i).getZipCode() == zip)
aZip = zips.get(i);
else
aZip = null;
}
return aZip;
}
public int distance(int zip1, int zip2) {
int dist = 0;
double p1 = 0.0;
double p2 = 0.0;
double p3 = 0.0;
if(zips.findZip(zip1) == null || zips.findZip(zip2) == null)
dist = -1;
...
错误本身是:
找不到符号 - 方法 findZip(int)
您在这里使用的符号尚未在任何可见范围内声明。
使用ZipCodeDatabase.findZip(int); 会出现以下编译器错误:
无法从静态上下文中引用非静态方法 findZip(int)
您正在尝试从静态方法引用实例字段或实例方法。
我目前正在解决这个问题,如果需要,请返回更多更新。谢谢大家的帮助。
ZipCode 本身并没有真正解决这个问题,它只是一组用于 zip 的 set 和 get 方法。
【问题讨论】:
-
它在抱怨什么符号?这将是一种有用的信息。
-
添加你得到的错误
-
我认为您发布的代码没有任何问题。用整个代码更新您的问题。您可能在某处缺少分号或括号。
-
可能是缺少导入或其他原因。除此之外,您还可以使用增强的 for 循环来使代码更简洁。
-
什么是
zips?如果它是ArrayList,则它没有findZip方法。我们需要查看所有信息,否则我们只是猜测。
标签: java arraylist methods call