我的任务是创建一个名为MyRectangle的类来表示矩形。
所需的数据字段是宽度,高度和颜色。宽度和高度使用双数据类型,颜色使用String。然后编写一个程序来测试MyRectangle类。在客户端程序中,创建两个MyRectangle对象。为两个对象中的每一个指定宽度和高度。将第一个对象指定为红色,将第二个对象指定为黄色。显示两个对象的所有属性,包括其区域。
我已经把所有内容都写完了,并且没有任何错误,但无论我为矩形添加什么值,我的输出都保持不变。
package MyRectangle;
public class MyRectangle{
private double width = 1.0;
private double height = 1.0;
private static String color = "black";
public MyRectangle(double par, double par1){
width ++;
height ++;
}
//Parameters for width, height, and color //
public MyRectangle(double widthParam, double heightParam, String colorParam){
width = widthParam;
height = heightParam;
color = colorParam;
width ++;
height ++;
}
// Accessor width //
public double getWidth(){
return width;
}
public void setWidth(double widthParam){
width = (widthParam >= 0) ? widthParam: 0;
}
// Accessor height //
public double getHeight(){
return height;
}
public void setHeight(double heightParam){
height = (heightParam >= 0) ? heightParam: 0;
}
// Accessor color //
public static String getColor(){
return color;
}
public static void setColor(String colorParam){
color = colorParam;
}
// Accessor area //
public double findArea(){
return width * height;
}
}
class MyRectangleTest {
@SuppressWarnings("static-access")
public static void main(String args[]) {
// Create triangle and set color value to red //
MyRectangle r1 = new MyRectangle(5.0, 25.0);
r1.setColor("Red");
System.out.println(r1);
System.out.println("The area of rectangle one is: " + r1.findArea());
// Create triangle and set color value to yellow //
MyRectangle r2 = new MyRectangle(3.0, 9.0);
r2.setColor("Yellow");
System.out.println(r2);
System.out.println("The area of rectangle one is: " + r2.findArea());
}
}
答案 0 :(得分:4)
您正在使用的构造函数毫无意义。
您忽略传递的矩形尺寸,因此您将始终获得一个2 x 2的矩形:
private double width = 1.0;
private double height = 1.0;
...
public MyRectangle(double par, double par1){
width ++;
height ++;
}
应该是这样的:
public MyRectangle(double width, double height){
this.width = width;
this.height = height;
}
此外,颜色成员不应该是静态的,除非您希望所有矩形都具有相同的颜色。
最后一件事 - 为了System.out.println(r1);
和System.out.println(r2);
到Display all properties of both objects
,您必须覆盖toString()
:
@Override
public String toString()
{
return "width = " + width + " height = " + height + " color = " + color;
}
答案 1 :(得分:3)
这里有一些问题:
color
成员是static
,这意味着属于类,而不是每个实例都有自己的。(double, double)
构造函数不存储高度和宽度。总结一下,你的班级应该或多或少地宣布:
public class MyRectangle {
private double width;
private double height;
private String color;
private static final String DEFAULT_COLOR = "black";
public MyRectangle(double width, double height) {
this (width, height, DEFAULT_COLOR);
}
public MyRectangle(double width, double height, String color) {
this.width = width;
this.height = height;
this.color = color;
}
// Rest of the required methods
}