Java正在读取旧的输入文件,而不是新的

时间:2012-03-05 01:41:04

标签: java

我有一些java代码读取文本文件,将内容添加到矢量中,然后使用图形窗口将这些点打印到屏幕。

我有三个pointdata.txt文件,pointdata1.txt,pointdata2.txt和pointdata3.txt。

我遇到的问题是,即使我将驱动程序中的输入文件更改为pointdata1或pointdata2,它仍然会针对pointdata3运行。我已经确保在代码中的其他地方没有出现pointdata3。它只出现两次,但我已经确定它是相同的。 我已经检查了文件本身,它们是不同的。检查并检查并检查路径名,它们是不同的!

即使我在整个代码中注释掉每个System.out.println(),它仍会打印所有内容!

如果代码不再引用文本文件,甚至运行,eclipse只会继续打印以前添加到视口中的内容吗?

以下是我司机的代码:

import java.util.*;

public class PointDriver {
private PointField pointfield;

    // testing
    public void doAllTests() throws Exception{
        this.test1();
        this.test2();
    }

    // Display all points in the file
    public void test1() throws Exception{

        SimpleIO sIO = new SimpleIO();

        System.out.println("Contents of Point File: "); 
        sIO.displayFile("pointdata1.txt");
        //sIO.displayFile("pointdata2.txt");
        //sIO.displayFile("pointdata3.txt");        
        System.out.println();   

    }

// Load points from a file into a vector and echo them back to the screen 
// This uses the StringTokenizer to split the lines into two Strings, then
// uses the Point class to assign the two Strings to x,y double variables 
// which form Points.  Within the same loop, the points are also displayed
// in a window using the Graph Window class. Maximum x and y values are used  
// to determine the dimensions of the GraphWindow, adding 10 units to each 
// value to provide a border.
    public void test2() throws Exception{

        System.out.println("Contents of Point File: ");
        System.out.println();   
        System.out.println("Points are Displayed in a Graph Window");
        System.out.println();   

        Vector lines;
        lines = pointfield.getlines("pointdata1.txt");
        //lines = pointfield.getlines("pointdata2.txt");
        //lines = pointfield.getlines("pointdata3.txt");            

        Iterator IT;
        IT = lines.iterator();      

        Vector v;
        v = new Vector();

        double maxX, maxY;          

        PointField pointfield;
        pointfield = new PointField();

        GraphWindow gw;
        gw = new GraphWindow();

        while (IT.hasNext()) {

            StringTokenizer st;

            String ID = (String)IT.next();
            st = new StringTokenizer(ID);

            double x = Double.parseDouble(st.nextToken());
            double y = Double.parseDouble(st.nextToken());

            Point p;
            p = new Point(x,y);

            v.addElement(p);

            int i = v.size();
            System.out.println("Point ID: " +i+ " X: "+x+", Y: "+y);    

            gw.plotPoint(x, y);                 
        }

        this.pointfield = new PointField(v);
        maxX = this.pointfield.findMaxXPoint();
        maxY = this.pointfield.findMaxYPoint();

        int width = (int)maxX + 10;
        int height = (int)maxY + 10;

        gw.setMap(width, height);       
    }

    // Short main method to kick of all tests sequence in doAllTests method
    public static void main(String[] args) throws Exception {
        PointFieldDriver pfd;
        pfd = new PointFieldDriver();
        pfd.doAllTests();
    }
}   

1 个答案:

答案 0 :(得分:1)

看起来Eclipse正在运行旧版本的类文件。我正在收集这个,因为你说你注释掉了printlns,但输出仍在显示。

要检查的一些事项:

  • 在菜单中,确保项目>设置了自动构建。如果没有设置,请设置它,您的问题应该解决。
  • 查看更改源时类文件的时间戳是否正在更改。如果不是,则Eclipse不会出于某种原因重新编译它。您可以在bin文件夹下找到类文件(如果您使用的是Eclipse项目默认值)。
  • 如果您发现时间戳已旧,请尝试从Eclipse外部删除bin文件夹。接下来,右键单击项目并选择刷新。最后,选择项目>的清洁即可。这应该会导致代码重新编译为新的类文件。