###前提・実現したいこと
以下の仕様のプログラムの作成をしています。
・入力された計算式を計算しテキストボックスに出力する
・9/0などの0除算時にその旨を伝えるダイアログを出します。
また、入力された計算式はソースコードのformulaに代入され、0除算以外は正常に動作することは確認済みです。
###発生している問題・エラーメッセージ
実際に0除算を行うとテキストボックスに「Infinity」が出力されcatchされない
###該当のソースコード
import javax.script.*; ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"); try{ double result=Double.parseDouble((engine.eval(formula)).toString()); jTextField1.setText(String.valueOf(result)); }catch(ScriptException | NumberFormatException e) { //計算不可能な時にダイアログを表示するコード }
###試したこと
0除算さえ検出できればいいと思いNumberFormatExceptionをArithmeticExceptionに変更して実行するも結果は変わりませんでした。
演算結果がInfinityであるのでdouble型に変換した時に例外処理が発生するのかと思いましたがcatchされず困っています。
どのようにコードを書き直せばよいのか教えていただけないでしょうか、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー