Java中的打印点数组

时间:2014-09-16 09:34:01

标签: java arrays loops point

我现在已经坚持了一段时间。我读过一个Point类型的对象,我想将它分配给Point数组并打印出来。出于某种原因,我的代码不打印任何东西......如果有人知道造成这种情况的原因。

private Point[] pointArray;
while ((obj = inStream.readObject()) != null)

            {

                Point pointValue = (Point) obj;

                int xValue = pointValue.x;
                int yValue = pointValue.y;

                pointArray[counter] = new Point(xValue, yValue);

                System.out.println(pointArray[counter].toString());
                counter++;
            }

4 个答案:

答案 0 :(得分:1)

数组在Java中具有固定的大小,您需要使用ArrayList,如:

    List<Point> points = new ArrayList<Point>();
    while ((obj = inStream.readObject()) != null) {

        Point pointValue = (Point) obj;

        int xValue = pointValue.x;
        int yValue = pointValue.y;

        points.add(new Point(xValue, yValue));

        System.out.println(points.get(points.size()-1).toString());
        counter++;
    }

答案 1 :(得分:1)

在运行代码之前,您需要更正代码,否则此代码至少无法编译。

private Point[] pointArray; // you have declare the array

但你永远不会初始化它。首先初始化它。

您再次调用toString()的{​​{1}}方法。不要这样做,因为它会在Array中调用ObjecttoString()方法。

编辑:发表评论。

Java

然后使用I dont know the size of the array as it depends on the file. 代替List

Array

不仅有这个优势,而且您可以直接拨打List<Point> pointsList=new ArrayList<>(); ,而不是toString()。由于toString()方法在Arrays中有override,因此您需要覆盖AbstractCollection类中的toString()方法

答案 2 :(得分:1)

上面代码的问题是数组没有初始化,根据你你没有实际的大小来初始化它所以你可以使用list将列表转换为数组如果你需要

List<Point> points = new ArrayList<Point>();
    while ((obj = inStream.readObject()) != null) {

        Point pointValue = (Point) obj;

        int xValue = pointValue.x;
        int yValue = pointValue.y;

        pointsList.add(new Point(xValue, yValue));

        System.out.println(pointsList.get(pointsList.size()-1).toString());
        counter++;
    }
    Point[] pointsArray = pointsList.toArray(new Point[pointsList.size()]);

答案 3 :(得分:1)

您可以使用ArrayList读取点,然后将其转换为您的数组:

    List<Point> points = new ArrayList();

    // Read Points and add them to the list
    // points.add(new Point(1, 2));
    // points.add(new Point(3, 4));

    Point[] pointsArray = new Point[points.size()];
    points.toArray(pointsArray);