Рассмотрим пример добавления двух шестнадцатеричных чисел, представленных в виде массива символов: например: 2A и 1D.Что необходимо отложить проверку исключения IllegalArgumentException?
Теперь, up up F действительны, но G-Z недопустимы для 16 бит. У меня есть два случая ниже, чтобы бросить IllegalArguments, в случае 1 он брошен в начале, до того, как начнется даже добавление. Во втором примере это происходит, когда выполняется additon.
Пожалуйста, не предлагайте изменения фрагмента кода, его портной, чтобы задать мой вопрос. Возникает вопрос: лучше ли использовать/не применять обычную практику IllegalArgument во время алгоритма m (в данном случае дополнение), а не заранее?
Случай 1:
- Если char1.length == 0 или char2.length == 0 бросок illegalargument.
- Проверьте каждый символ в char1, если какой-либо символ является незаконным, то бросайте нелегальные карты.
- Проверьте каждый символ в char2, если какой-либо символ является незаконным, а затем бросайте нелегальные.
Cons of case 2: Extra for loop to check each char in char arrays. O(n)
Случай 2:
Если char1.length == 0 или char2.length == 0 бросок illegalargument.
for (; j >= 0; j--, i--) {
int num1Digit = Character.digit(longNum.charAt(i), radix);
if (num1Digit == -1) throw new IllegalArgumentException("Invalid radix for character"); // eg: 1Z, and radix is 16.
int num2Digit = Character.digit(shortNum.charAt(j), radix);
if (num2Digit == -1) throw new IllegalArgumentException("Invalid radix for character"); // eg: 1Z, and radix is 16.
Здесь нелегальный аргумент отбрасывается, когда фактическое добавление в процессе.