Создание нового объекта из аргументов, заданных через строку cmd, дает мне OutOfMemoryError, выброшенную из UncaughtExceptionhandler - PullRequest
0 голосов
/ 09 декабря 2018

Не могу выяснить, почему вышла указанная ошибка.Это работает нормально, когда я ввожу только 2 аргумента (например, 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]));    
    }
}

класс Длина работает везде, где угодно

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

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

Кто-нибудь может мне помочь?Я думал, что мой код должен работать, если пользователь вводит правильно (длина + пары единиц)

1 Ответ

0 голосов
/ 09 декабря 2018

Эта итерация:

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

выполняется всегда, когда args.length > 2, потому что i остается 2 навсегда.Отсюда ошибка памяти.

Что вам нужно:

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