1

我无法找出引发上述错误的原因。当我只输入 2 个参数(eG 22.5 公里)时,它工作正常,使用更多参数(20.5 公里 400 英尺)会产生错误。

这是代码:

if (args.length > 0)
{            
    for (int i = 0; i < args.length; i = +2)
    {
        lengthsCollection.add(new Length(Double.parseDouble(args[i]), args[i+1]));    
    }
}

class Length 在其他地方都可以正常工作

public class Length {
    private double valueM;
    private String unitM;

    public Length(double value, String unit)  
    {
        this.valueM = value;
        this.unitM = unit;
    }

有人可以帮我吗?我认为如果用户输入正确(长度+单位对),我的代码应该可以工作

4

1 回答 1

1

本次迭代:

 for (int i = 0; i < args.length; i = +2)

永远执行,args.length > 2因为永远i存在2。因此内存错误。

你需要的是:

for (int i = 0; i < args.length; i += 2)
于 2018-12-09T17:33:53.133 回答