java - 如何根据 .txt 文件信息创建对象并分配给数组列表?

标签 java arraylist geometry java.util.scanner

GeometricObjectsData.txt:

CIRCLE, 1, blue, true
RECTANGLE, 1, 2, blue, true
RECTANGLE, 10, 2, red, true
CIRCLE, 2, green
RECTANGLE
CIRCLE

我不确定如何将 .txt 文件中的信息添加到对象 Circle() 或 Rectangle() 中,然后将其添加到 ArrayList 中,以便我可以比较基于 Area 的最大对象。

如果需要,我可以发布其他类,但我只是停留在主要方法上,在该方法中,我根据文本文件中的信息创建一个对象。

编辑:

    public static void main(String[] args) throws FileNotFoundException {
        Scanner input = new Scanner(new File(
                "C:/Users/Charles/Desktop/GeometricObjectsData.txt"));

        ArrayList<GeometricObject> list = new ArrayList<GeometricObject>();

        while (input.hasNextLine()) {
            String line = input.nextLine();
            String[] tokens = line.split(", ");
            if (tokens[0].equals("CIRCLE")) {
                Circle c = new Circle();
                float radius = Float.parseFloat(tokens[1]);
                c.setRadius(radius);
                String color = String.valueOf(tokens[2]);
                c.setColor(color);
                Boolean filled = Boolean.valueOf(tokens[3]);
                c.setFilled(filled);
                c.getArea();
                list.add(c);
                System.out.println(c.toString());
            } else if (tokens[0].equals("RECTANGLE")) {
                Rectangle r = new Rectangle();
                float height = Integer.parseInt(tokens[1]);
                r.setHeight(height);
                float width = Integer.parseInt(tokens[2]);
                r.setWidth(width);
                String color = String.valueOf(tokens[3]);
                r.setColor(color);
                Boolean filled = Boolean.valueOf(tokens[4]);
                r.setFilled(filled);
                r.getArea();
                list.add(r);
                System.out.println(r.toString());
            }

        }

    }

}

将代码更改为 ArrayIndexOutOfBoundsExecption 后,我得到了一个 ArrayIndexOutOfBoundsExecption 。我认为当它到达第四行时它就会停止,其中没有第四个标记指示它是否已填充/未填充。我该如何解决这个问题?

最佳答案

创建这些形状所需的所有信息都可以在 Oracle 网站上找到。

圈子:http://docs.oracle.com/javafx/2/api/javafx/scene/shape/Circle.html

矩形:http://docs.oracle.com/javase/7/docs/api/java/awt/Rectangle.html

我不确定你的txt文件中的数据到底代表什么,但假设圆圈的数字是半径,矩形的两个数字是它的宽度和高度,你会想要这样的东西:

    Scanner input = new Scanner(new File("C:/Users/Charles/Desktop/GeometricObjectsData.txt"));

    // you read each line at a time, so better to have hasNextLine instead
    while(input.hasNextLine()) {
        String line = input.nextLine();
        System.out.println(line);
        String[] tokens = line.split(", ");
        if (tokens[0].equals("Circle"){
            Circle c = new Circle();
            float radius = Float.parseFloat(tokens[1]);
            c.setRadius(radius);

            // do what you wish with circle
        }
        else if (tokens[0].equals("Rectangle"){
            Rectangle r = new Rectangle();
            int height = Integer.parseInt(tokens[1]);
            int width = Integer.parseInt(tokens[2]);
            r.setSize(width,height);

            // do what you wish with rectangle
        }

    }

至于txt文件中提供的其他信息,您需要解释一下true的含义。圆形和矩形类都没有涉及颜色的方法,因此如果您打算在 Canvas 上绘制它们,那么您将需要查找 Canvas 上与填充颜色相关的方法。

关于java - 如何根据 .txt 文件信息创建对象并分配给数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263614/

相关文章:

java - Arraylist 到 DefaultComboBoxModel

algorithm - 在 KML 多边形上查找最近的点

Java 进程无限期停止并且无法正常退出?

java - 转置 NxN 矩阵

java - 如何对两个对象数组列表进行排序?

java - Jsoup ArrayList 和 LinkedHashMap 组合

java - Spring Data JPA 切片底层 SQL

java - 使用 ArrayList<int[][]> 时如何查看元素是否已在列表中?

计算CUDA中两个三角形之间的角度

javascript - 为什么这个圆公式在 Javascript 中给出的是椭圆体,而在 Python 中给出的是圆?