我试图使用传入的参数创建一个新对象,然后使用该新对象放置在下面列出的setCarColor方法中。但是我在构造函数中的setCarColor为我的clv变量给出了错误。它说“找不到符号”。 clv是我来自CarColor类的变量。我不确定是否是因为传入的参数(rdIn,grnIn,bluIn)是整数还是什么?请问有人有什么想法吗?
最好的祝福,
public abstract class Vehicle
{
private String shapeId;
CarColor carColor;//CarColor data member from the ColorValue.java class
public Shape(String bodyid, int rd, int grn, int ble)
{
CarColor clv = new CarColor(rdIn, grnIn, bluIn);
setCarColor(clv(rd, grn, ble));// <---error here
}
private CarColor getCarColor()
{
return carColor;
}
private void setCarColor(int redIn, int blueIn, int greenIn)
{
if (redIn == 0 || blueIn == 0 || greenIn == 0 )
{
System.out.println("The value entered in is null. Please try again ");
System.exit(-1);
}
}
最佳答案
这行几乎没问题:
ColorValue clv = new ColorValue(rdIn, grnIn, bluIn);
...尽管它没有填充
colorValue
字段(这可能是您期望的),并且实际上没有rdIn
,grnIn
和bluIn
变量。您是说rd
,grn
,ble
吗? (顺便说一句,如果您不使用这样的名称,这会很有帮助。)但是此行有两种中断方式:
setColorValue(clv(rd, grn, ble));
首先,它试图调用名为
clv
的方法。您没有这种方法。您有一个名为clv
的变量,但没有“调用”一个变量。第二个问题是,如果您真的要这样说:
setColorValue(clv);
那么您将使用不正确的参数-
setColorValue
没有类型为ColorValue
的一个参数,它具有三个参数,均为int
。不幸的是,您不清楚要做什么,因此很难建议您。也许你的意思是这样的:
public abstract class Geometry
{
private String shapeId;
private ColorValue colorValue;
public Shape(String shapeId, int red, int green, int blue)
{
this.shapeId = shapeId;
setColorValue(red, green, blue);
}
public ColorValue getColorValue()
{
return colorValue;
}
// Note the consistent order of the parameters - always red, green, blue.
public void setColorValue(int red, int green, blue)
{
// Don't use System.exit() in the middle of a method! An exception
// is the idiomatic way of reporting bad arguments.
if (red == 0 || blue == 0 || green == 0)
{
throw new IllegalArgumentException("red green and blue must be non-zero");
}
colorValue = new ColorValue(red, green, blue);
}
}