, поэтому мне нужно использовать метод для печати содержимого моего прямоугольника и объектов окружности. Я хочу, чтобы они отформатированы что-то вроде этогоИспользуйте для каждого цикла для печати объектов
GeometricObject [color=red, filled=false, dateOfCreation=Wed Feb 11 12:21:51 EST
2015]
Circle [ radius= 4.0 Area=50.27 Perimeter=25.13 ]
Я был дан метод подписи, так что я должен использовать его, я попробовал два различных способа проверить, является ли объект либо прямоугольник или круг, а затем принять правильное действие, но я не могу заставить их печатать что-либо (я считаю, что я могу что-то упустить из своего общедоступного класса hw2redo, в частности, моего метода recreateObject). Логика, к которой я стремилась, состоит в том, что если объект равен кругу (в моем методе recreateObject у меня есть две сигнатуры возврата или круга или прямоугольника), то он будет использовать метод printCircle в классе Circle, но не выводить. Мой второй логический путь состоял в том, что в списке объектов содержалось слово «Прямоугольник» в любом месте, конечно, это означало бы, что это объект прямоугольника и будет обращаться к методу printRectangle в классе Rectangle, но опять-таки ничего. Тем не менее, отметим, что если я просто использую ((Circle) o).printCircle();
, например, он будет вызывать метод printCircle для всех моих объектов круга и выдавать исключение, когда он достигнет моего первого объекта прямоугольника (я думаю, что я близок!).
private static void showObjects(ArrayList<GeometricObject> list) {
for(GeometricObject o : list) {
if ((o.equals("Circle")))
((Circle) o).printCircle();
if (o.equals(list.contains("Rectangle")))
((Rectangle) o).printRectangle();
}
}
Вот мой код, если вы заинтересованы.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Scanner;
public class hw2redo
{
public static void main(String[] args) throws FileNotFoundException {
GeometricObject g = null;
File diskFile = new File("file.txt");
Scanner diskScanner = new Scanner(diskFile);
ArrayList<GeometricObject> list = new ArrayList<GeometricObject>();
while(diskScanner.hasNext()){
String geolist = diskScanner.nextLine();
g = recreateObject(geolist);
list.add(g);
}
diskScanner.close();
/* while (diskScanner.hasNext()) {
String list = diskScanner.nextLine();
g = recreateObject(list);
}
diskScanner.close();*/
showObjects(list);
}
private static GeometricObject recreateObject(String data) {
String[] list = data.split(",");
String geoObject = list[0];
if (geoObject.equals("Circle")) {
String color = list[1];
boolean filled = Boolean.valueOf(list[2]);
double radius = Double.valueOf(list[3]);
return new Circle(radius, color, filled);
}
if (geoObject.equals("Rectangle")) {
String color = list[1];
boolean filled = Boolean.valueOf(list[2]);
double height = Double.valueOf(list[3]);
double width = Double.valueOf(list[4]);
return new Rectangle(width, height, color, filled);
}
return null;
}
private static void showObjects(ArrayList<GeometricObject> list) {
for(GeometricObject o : list) {
if ((o.equals("Circle")))
((Circle) o).printCircle();
if (o.equals(list.contains("Rectangle")))
((Rectangle) o).printRectangle();
}
}
}
abstract class GeometricObject {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
private String data;
/** Construct a default geometric object */
public GeometricObject() {
super();
dateCreated = new java.util.Date();
//this.data = data;
}
/** Construct a geometric object with the specified color
* and filled value */
public GeometricObject(String color, boolean filled) {
super();
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
/** Return color */
public String getColor() {
return color;
}
/** Set a new color */
public void setColor(String color) {
this.color = color;
}
/** Return filled. Since filled is boolean,
its getter method is named isFilled */
public boolean isFilled() {
return filled;
}
/** Set a new filled */
public void setFilled(boolean filled) {
this.filled = filled;
}
/** Get dateCreated */
public java.util.Date getDateCreated() {
return dateCreated;
}
/** Return a string representation of this object */
public String toString() {
return "GeometricObject [color=" + color +", filled="+ filled + ", dateOfCreation=" + dateCreated +
"]\n";
}
}
class Circle extends GeometricObject
{
private double radius;
public Circle() {
super();
radius = 1;
}
public Circle(double radius,
String color, boolean filled) {
super(color, filled);
this.radius = radius;
setColor(color);
setFilled(filled);
}
/** Return radius */
public double getRadius() {
return radius;
}
/** Set a new radius */
public void setRadius(double radius) {
this.radius = radius;
}
/** Return area */
public double getArea() {
return radius * radius * Math.PI;
}
/** Return diameter */
public double getDiameter() {
return 2 * radius;
}
/** Return perimeter */
public double getPerimeter() {
return 2 * radius * Math.PI;
}
/** Print the circle info */
public void printCircle() {
System.out.println("The circle is created " + getDateCreated() +
" and the radius is " + radius);
}
}
class Rectangle extends GeometricObject {
private double width;
private double height;
public Rectangle() {
super();
}
public Rectangle(
double width, double height, String color, boolean filled) {
super(color, filled);
this.width = width;
this.height = height;
setColor(color);
setFilled(filled);
}
/** Return width */
public double getWidth() {
return width;
}
/** Set a new width */
public void setWidth(double width) {
this.width = width;
}
/** Return height */
public double getHeight() {
return height;
}
/** Set a new height */
public void setHeight(double height) {
this.height = height;
}
/** Return area */
public double getArea() {
return width * height;
}
/** Return perimeter */
public double getPerimeter() {
return 2 * (width + height);
}
public void printRectangle() {
System.out.println("The circle is created " + getDateCreated() +
" and the radius is " + width);
}
}
Мой file.txt (объекты я пытаюсь воссоздать) conatins
Circle,green,false,4.0
Circle,blue,false,2.0
Circle,blue,true,7.0
Rectangle,orange,true,10.0,6.0
Rectangle,green,false,5.0,11.0
Rectangle,red,true,14.0,12.0
Любая помощь или советы в правильном направлении было бы весьма признателен. Благодаря тонну!
'o.equals (list.contains (« Прямоугольник »))' неверно (как и ваш другой вызов 'equals'); вы попытаетесь увидеть, являются ли два абсолютно несвязанных объекта эквивалентными, что не получится. – Makoto
Как они полностью не связаны? Я пытаюсь посмотреть, является ли объект Кругом? @Makoto –
Ну ... строка '' Circle'' не является экземпляром 'GeometricObject' ... и ни одна из них не является' boolean'. – Makoto