我试图打印出我的数组中包含从文本文件中赋值的内容。但是我遇到了两个错误,任何帮助将不胜感激。 我的代码是:
Auth.isLoggedIn(function(loggedIn) {
console.log(loggedIn);
if (!loggedIn) {
console.log("redirecting");
// event.preventDefault();
$state.go('login');
}
});
但是,我必须创建三个新类来删除错误。赋值要求该方法的编写方式与此类似 - 私有静态GeometricObject recreateObject(String data)。我不确定为什么我需要创建新类才能消除这些错误。
import java.util.*;
import java.io.*;
public class Driver {
public static void main(String[] args) throws FileNotFoundException {
GeometricObject g = null;
File diskFile = new File("src/file.txt");
Scanner diskScanner = new Scanner(diskFile);
while (diskScanner.hasNext()) {
String list = diskScanner.nextLine();
g = recreateObject(list);
}
diskScanner.close();
}
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(color, filled, radius);
}
if (geoObject.equals("Rectangle")) {
String color = list[1];
boolean filled = Boolean.valueOf(list[2]);
double length = Double.valueOf(list[3]);
double width = Double.valueOf(list[4]);
return new Rectangle(color, filled, length, width);
}
return null;
}
}
我还有两个错误:
任何帮助都会非常感激,因为我已经尝试了大约4个小时但无济于事。
我的file.txt包含
public class Circle extends GeometricObject
{
}
public class GeometricObject
{
}
public class Rectangle extends GeometricObject
{
}
这是实际作业
Circle,red,false,4.0
Circle,blue,true,2.0
Circle,blue,true,10.0
Rectangle,yellow,true,10.0,6.0
Rectangle,green,true,5.0,11.0
Rectangle,red,true,20.0,15.0
答案 0 :(得分:2)
哎呀,你的Circle类有没有构造函数,这意味着它只有默认的no-arg构造函数:
public Circle() {
}
因此错误消息告诉您完全有什么问题 - 您尝试使用不存在的构造函数。如果你想为3个args的类调用一个构造函数,你将不得不给第一个类。
public class Circle extends GeometricObject {
// you'll need fields here
public Circle(String color, boolean somethingNotSureWhat, double radius) {
// call the super class's constructor if it takes parameters
// here set your fields that are not part of the super class
}
}
最重要的是 - 由于有大量资源可以向您展示如何使用和创建构造函数,因此无需猜测,包括:
修改
- 读取每个磁盘记录,创建相应的对象(圆形或矩形),将对象添加到名为list的动态数组中。
醇>
您的说明告诉您,您需要创建并填写ArrayList<GeometricObject>
。您的ArrayList在哪里?
- 很好地打印列表的内容(指明位置和内容)。
醇>
这告诉您所有类都需要一个不错的toString()
方法来实现简单明了的输出。
- 编写一个方法来查找包含最大元素的列表中的位置(所有元素的最大区域)。
醇>
抽象超级GeometricObject类需要一个abstract public double getArea()
方法,每个子类都需要实现该方法,以便返回计算区域。然后,您需要创建一个静态方法,遍历ArrayList,找到列表中最大的区域。
- 打印所选对象的位置和数据(包括区域)(主方法)。
醇>
上面的方法应该返回列表中最大的GeometricObject,然后你需要输出它的属性。
- 编写一个方法来查找列表中包含给定颜色的最大元素的位置(尝试“RED”)。
醇>
另一种方法,类似于上面的方法,但它同时查看getColor()
返回的颜色字符串和getArea()
返回的双精度字。
- 打印所选对象的位置和数据(包括区域) - 如果有的话!
醇>
自解释
以下是您需要编写的方法的签名
以下是所有自我解释
所以是的,你将需要三个类,一个具有abstract public double getArea();
方法签名的抽象GeometricObject,它具有名称String(实际上可能不是必需的),一个颜色String,一个布尔字段,以及一个接受名称,颜色和布尔值的构造函数(尽管名称可能没有必要,因为该String告诉您要使用哪个子类)。然后你需要两个子类,每个子类都有自己的字段,Circle的双半径字段,Rectangle的doubleA和sideB,以及接受这些信息的构造函数以及超类构造函数所需的信息。 / p>