From 0f8a7c84fb92caf54fb93eb14acd8f7ed294dc80 Mon Sep 17 00:00:00 2001 From: Ayden Bourdeau Date: Fri, 1 Nov 2024 14:43:59 -0400 Subject: [PATCH] Fixed Dividing by Zero errors; adding illegalException for all methods to throw exception if divisor is 0 --- .../algorithms/mathematics/Division.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/com/jwetherell/algorithms/mathematics/Division.java b/src/com/jwetherell/algorithms/mathematics/Division.java index c133f741..e485369e 100644 --- a/src/com/jwetherell/algorithms/mathematics/Division.java +++ b/src/com/jwetherell/algorithms/mathematics/Division.java @@ -3,6 +3,11 @@ public class Division { public static final long division(int a, int b) { + + if (b == 0) { + throw new IllegalArgumentException("Divisor cannot be zero."); + } + long result = ((long) a) / ((long) b); return result; } @@ -11,6 +16,10 @@ public static final long divisionUsingLoop(int a, int b) { int absA = Math.abs(a); int absB = Math.abs(b); + if (b == 0) { + throw new IllegalArgumentException("Divisor cannot be zero."); + } + long temp = absA; long result = 0; while (temp >= 0) { @@ -25,6 +34,10 @@ public static final long divisionUsingRecursion(int a, int b) { int absA = Math.abs(a); int absB = Math.abs(b); + if (b == 0) { + throw new IllegalArgumentException("Divisor cannot be zero."); + } + long result = 1; int diff = absA - absB; if (diff > 0 && diff <= 1) { @@ -41,6 +54,10 @@ public static final long divisionUsingMultiplication(int a, int b) { int absA = Math.abs(a); int absB = Math.abs(b); + if (b == 0) { + throw new IllegalArgumentException("Divisor cannot be zero."); + } + int temp = absB; int counter = 0; while (temp <= absA) { @@ -59,6 +76,10 @@ public static final long divisionUsingShift(int a, int b) { int absB = Math.abs(b); int tempA, tempB, counter; + if (b == 0) { + throw new IllegalArgumentException("Divisor cannot be zero."); + } + long result = 0L; while (absA >= absB) { tempA = absA >> 1; // Right shift "a" @@ -78,6 +99,11 @@ public static final long divisionUsingShift(int a, int b) { public static final long divisionUsingLogs(int a, int b) { long absA = Math.abs(a); long absB = Math.abs(b); + + if (b == 0) { + throw new IllegalArgumentException("Divisor cannot be zero."); + } + double logBase10A = Math.log10(absA); double logBase10B = Math.log10(absB); double powOf10 = Math.pow(10, (logBase10A - logBase10B));