Создание нового объекта из аргументов, заданных через строку cmd, дает мне OutOfMemoryError, выброшенную из UncaughtExceptionhandler
Я не могу выяснить, почему выше ошибка. Это работает нормально, когда я ввожу только 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 ответ
Решение
Эта итерация:
for (int i = 0; i < args.length; i = +2)
выполняется навсегда, когда args.length > 2
так как i
остатки 2
навсегда. Отсюда ошибка памяти.
Что вам нужно это:
for (int i = 0; i < args.length; i += 2)