打算写一个从文件读数据,并保存在GPSdata类中。环境:jdk1.6
错误提示是:
non-static variable this cannot be referenced from a static context
g[i]=new GPSdata();
^
啥意思……?请各位高手赐教。程序是我改书上的,运行原程序没问题,为啥我改了,就报这个错。
程序如下:
……
主程序
public static void main(String[] args) {
try{
// Retrive the data from ".txt" file
BufferedReader in=new BufferedReader(new FileReader("JB+XJT.TXT"));
GPSdata[] gdata=readData(in);
in.close();
//print for testing
for(int i=0;i<gdata.length;i++)
System.out.println(gdata[i]);
}catch(IOException exception)
{
exception.printStackTrace();
} }
从文件读入数据并赋给GPSdata数组:
static GPSdata[] readData(BufferedReader in) throws IOException
{
//retrieve the array size
int n=Integer.parseInt(in.readLine());
GPSdata[] g=new GPSdata[n];
for(int i=0;i<n;i++)
{
g[i]=new GPSdata();
g[i].readData(in);
}
return g;
}
GPSdata类:
class GPSdata
{
public GPSdata() {};
public GPSdata(String t,double h,double v)
{
utc=t;
latitude=h;
longitude=v;
}
public String getUTC()
{
return utc;
}
public double getLatitude()
{
return latitude;
}
public double getLongitude()
{
return longitude;
}
public void readData(BufferedReader in) throws IOException
{
String d=in.readLine();
StringTokenizer t=new StringTokenizer(d,"(,)");
utc=t.nextToken();
longitude=Double.parseDouble(t.nextToken());
latitude=Double.parseDouble(t.nextToken());
}
private double latitude;
private double longitude;
private String utc;
}
错误提示是:
non-static variable this cannot be referenced from a static context
g[i]=new GPSdata();
^
啥意思……?请各位高手赐教。程序是我改书上的,运行原程序没问题,为啥我改了,就报这个错。
程序如下:
……
主程序
public static void main(String[] args) {
try{
// Retrive the data from ".txt" file
BufferedReader in=new BufferedReader(new FileReader("JB+XJT.TXT"));
GPSdata[] gdata=readData(in);
in.close();
//print for testing
for(int i=0;i<gdata.length;i++)
System.out.println(gdata[i]);
}catch(IOException exception)
{
exception.printStackTrace();
} }
从文件读入数据并赋给GPSdata数组:
static GPSdata[] readData(BufferedReader in) throws IOException
{
//retrieve the array size
int n=Integer.parseInt(in.readLine());
GPSdata[] g=new GPSdata[n];
for(int i=0;i<n;i++)
{
g[i]=new GPSdata();
g[i].readData(in);
}
return g;
}
GPSdata类:
class GPSdata
{
public GPSdata() {};
public GPSdata(String t,double h,double v)
{
utc=t;
latitude=h;
longitude=v;
}
public String getUTC()
{
return utc;
}
public double getLatitude()
{
return latitude;
}
public double getLongitude()
{
return longitude;
}
public void readData(BufferedReader in) throws IOException
{
String d=in.readLine();
StringTokenizer t=new StringTokenizer(d,"(,)");
utc=t.nextToken();
longitude=Double.parseDouble(t.nextToken());
latitude=Double.parseDouble(t.nextToken());
}
private double latitude;
private double longitude;
private String utc;
}
解决方案 »
- 请问怎样能实现图文混排的发送,就像QQ那样,先从本机里面找出一张图片,放在聊天框里,然后输入文字,按发送,一起发给对方,对方也能收到图片和文字
- myeclipse 9.0 打开class后缀文件时出错 怎么解决啊 难道只能打开java后缀的吗
- 请问哪里有JAVA的题目做啊
- 判断两个无序数组相等问题
- 请问:能不能把JOptionPane.showInputDialog()的文本输入框改成密码框?
- 一个连接数据库的问题
- java里这样的出错信息一般表示什么?
- 6. 怎么把从一个new data()得到的日期取得的字符串再转回data类型?(很急!!!!)
- JavaScript如何能把ASCII转换在字符串?
- java多线程 关于锁的问题
- java面板组件/图形界面设计问题
- 如何把程序放到桌面快捷方式点击就可以运行?
用 g[i] = new TestA().new GPSdata();
3楼朋友理解错误了吧!楼主是在一个类中,只把类中的方法和内部类贴了出来,所以应该不存在少大括号的问题楼主准备:从文件读数据,并保存在GPSdata类中,出现上面错误:非静态变量无法引用静态变量的的,因为
static GPSdata[] readData(BufferedReader in) throws IOException 你返回的静态GPSdata[]类型变量,
而你的GPSdata内部类是public的,系统会人认为你的GPSdata[]类型的变量g中的数组元素在readData()方法中
已经初始化过了,你尝试把static去掉试一下
两位高手赐教~!小女,忘了把GPSdata类与主类分开了……
最后,挥泪三分感谢大侠……