Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息并通过editing this post阐明问题。

3年前关闭。





这就是我为数组列表定义构造函数的方式。

    public Quantity(String strMagnitude, String multiplier, String unit,
                    String strType)
{
        this.setMagnitude(strMagnitude);
        this.multiplier = multiplier;
        this.unit = unit;
        this.setType(strType);
    }


现在,我想在此列表中添加另一个元素的绝对大小:

private static List<Quantity> getAbsoluteQuantities(List<Quantity> quantities)
    {
        List<Quantity> absoluteQuantities = new ArrayList<Quantity>();

 float absoluteMagnitude;
    // loop through quantities
    for (Quantity quantity : quantities){
        Float magnitude = quantity.getMagnitude();
        String multiplier = quantity.getMultiplier();
        String unit = quantity.getUnit();
        UnitType type = quantity.getType();

        if (multiplier != null){
            float multiplierValue = populateMultiplierFromFile().get(multiplier);
            //System.out.println(multiplierValue);
            absoluteMagnitude = magnitude * multiplierValue;
           }
        else {
            absoluteMagnitude = magnitude;
        }
            String strMagnitude = String.valueOf(absoluteMagnitude);
            String strType = String.valueOf(type);
            String originalMagnitude = String.valueOf(magnitude);
         //The line below is where I get the error
            absoluteQuantities.add(originalMagnitude, multiplier, strType, unit,strMagnitude);

    }
    return absoluteQuantities;
 }


}

我怎么做?我不断收到错误消息,告诉我当格式为(String,String,String,String)时,无法使用(String,String,String,String,String)定义列表。

最佳答案

更改行:

         //The line below is where I get the error
            absoluteQuantities.add(originalMagnitude, multiplier, strType, unit,strMagnitude);




        absoluteQuantities.add(new Quantity(originalMagnitude, multiplier, strType, unit,strMagnitude));


您想将Quantity实例添加到List<Quantity>,因此您应该首先构造Quantity实例,然后将其附加到列表中

根据OP的响应进行更新
您实际上想将absoluteMagnitude传递给您的Quantity实例,该实例实际上仅接受4个参数-originalMagnitudemultiplierunitstrType

您可以使用以下两个步骤进行操作:


使用重载构造函数的构造函数链接。在此,您定义了Quantity整形器的重载,该重载具有5个参数。因此,您的Quantity类有两个构造函数-一个是您定义的构造函数,另一个是重载的构造函数,该构造函数接受absoluteMagnitude

公共数量(字符串strMagnitude,字符串乘数,字符串单位,
字符串strType)
{
//使用默认值absoluteMagnitude调用受约束的构造函数
this(strMagnitude,multiplier,unit,strType,“ 0.0”);
}

public Quantity(String strMagnitude, String multiplier, String unit,
                    String strType, String absoluteMagnitude)
{
    //initialize class level variabes using the parameter values
}

公开单个属性的getter/setter对。因此,absoluteMagnitude属性也将有一对

公共字符串getAbsoluteMagnitude()
{
返回this.absoluteMagnitude;
}

公共无效setAbsoluteMagnitude(字符串absoluteMagnitude)
{
this.absoluteMagnitude = absoluteMagnitude;
}


现在,当您想创建一个Quantity实例而不指定absoluteMagnitude值时,您可以调用带有4个参数的构造函数。然后,您可以在以后使用设置器设置absoluteMagnitude值。

但是,如果要指定absoluteMagnitude值,请使用其他带有5个参数的构造函数的重载版本。

07-24 18:50