Я пытаюсь написать небольшой класс java. У меня есть объект BigNumber. Я написал метод, который добавляет два положительных числа, и другой метод, который отводит два положительных числа.Добавление отрицательных и положительных чисел в java без BigInt
Теперь я хочу, чтобы они обрабатывали отрицательные числа. Поэтому я написал пару инструкций «если», например.
if (this.sign == 1 /* means '+' */) {
if (sn1.sign == 1) {
if (this.compare(sn1) == -1 /* means this < sn1 */) return sn1.add(this);
else return this.add(sn1);
}
т.д.
К сожалению, код выглядит некрасиво. Как куст if's и elses. Есть ли лучший способ написать такой код?
Редактировать я не могу просто сделать this.add(sn1)
beacuse иногда я хочу, чтобы добавить положительное число к отрицательному или negitve к недостатку. Но add может обрабатывать только положительные числа. Поэтому я должен использовать базовую математику и, например: вместо добавления отрицательного числа к отрицательному числу добавьте this.abs()
(абсолютное значение числа) в sn1.abs()
и верните результат с противоположным знаком. Дрю: эти строки взяты из метода _add. Я использую этот метод, чтобы решить, что делать с полученными цифрами. Отправить им добавить метод? Или отправить их на метод изъятия, но с другим порядком (sn1.subtract(this)
)? И так далее ..
if (this.sign == 1) {
if (sn1.sign == 1) {
if (this.compare(sn1) == -1) return sn1.add(this);
else return this.add(sn1);
}
else if (wl1.sign == 0) return this;
else {
if (this.compare(sn1.abs()) == 1) return this.subtract(sn1.abs());
else if (this.compare(sn1.abs()) == 0) return new BigNumber(0);
else return sn1.abs().subtract(this).negate(); // return the number with opposite sign;
}
} else if (this.sign == 0) return sn1;
else {
if (wl1.sign == 1) {
if (this.abs().compare(sn1) == -1) return sn1.subtract(this.abs());
else if (this.abs().compare(sn1) == 0) return new BigNumber(0);
else return this.abs().subtract(sn1).negate();
} else if (sn1.sign == 0) return this;
else return (this.abs().add(wl1.abs())).negate();
}
Как вы можете видеть - это код выглядит ужасно ..
Почему вы не можете просто 'this.add (sn1)' во всех случаях? –
Я держу пари, что есть более простой способ написать это, но я думаю, что нам, вероятно, нужен более крупный образец вашего кода. Из какого метода эти строки? –
Я не могу просто сделать this.add (sn1) beacuse иногда я хочу добавить положительное число к отрицательному или отрицательное к отрицательному. Но add может обрабатывать только положительные числа. Поэтому я должен использовать базовую математику и, например: вместо добавления отрицательного числа к отрицательному числу я добавляю this.abs() (абсолютное значение числа) в sn1.abs() и возвращаю результат с противоположным знаком. Дрю: это линии из метода _add. Я использую этот метод, чтобы решить, что делать с полученными цифрами. Отправить им добавить метод? Или отправить их на метод изъятия, но с другим порядком (sn1.subtract (this))? И так далее .. – 2010-01-21 23:06:50