오늘도 알고리즘을 풀다 마주한 에러 하나 정리하려고 한다
Exception in thread "main" java.lang.ArithmeticException: / by zero
에러 이름만 보면 산수를 하는데 문제가 있는거 같은데
ArithmeticException에 대해 알아보자
https://learn.microsoft.com/ko-kr/dotnet/api/system.arithmeticexception?view=net-7.0
마소에서 볼 수 있는 Exception의 정의는
산술, 캐스팅 또는 변환 작업에서 오류가 발생한 경우 throw되는 예외입니다.
다음과 같은 예외에 대한 기본 클래스가 있다고 하는데 첫번째에 해당하는 문제였다.
- DivideByZeroException- 수수가 0일 때 정수 나누기에서 throw됩니다. 예를 들어 10을 0으로 나누려고 시도하면 예외가 DivideByZeroException throw됩니다.
- NotFiniteNumberException에서 작업을 수행하거나 , , , Single.NegativeInfinitySingle.PositiveInfinityDouble.NegativeInfinitySingle.NaNDouble.PositiveInfinity및 를 반환Double.NaN할 때 throw되며 사용된 프로그래밍 언어는 해당 값을 지원하지 않습니다.
- OverflowException- 작업의 결과가 대상 데이터 형식의 범위를 벗어나면 throw됩니다. 즉, 숫자의 MinValue 속성보다 작거나 해당 MaxValue 속성보다 큽습니다. 예를 들어 값에 200 + 200을 Byte 할당하려고 시도하면 400이 데이터 형식의 상한인 256보다 크기 때문에 예외가 Byte throw OverflowException 됩니다.
나의 코드의 나머지가 1인 수를 구하려고
answer % n == 1;
// 해결방법 매우 심플
if (n != 0) {
answer % n == 1;
}
요런 로직이 있었는데 아무래도 n이 0인 케이스가 있었던 것 같다.