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的最大对象。
如果需要,我可以发布其他类,但是我只是停留在main方法上,该方法基于文本文件中的信息创建对象。
编辑:
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。我认为当它到达第4行时便停止了,而第4行没有第4个标记,表示是否已填充。我该如何解决?
最佳答案
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
的含义。圆形和矩形类都没有涉及颜色的方法,因此,如果您打算在画布上绘制它们,那么您将需要查找与填充颜色有关的画布方法。