先日、JavaでJavaScriptのeval()関数を呼び出す関数を作ったので、ついでに、簡易関数電卓を作ってみました。(^_^;
●JsCalc.java
import javax.script.*; import java.util.Scanner; class JsCalc { // JsCalc.java [java] static ScriptEngineManager factory = new ScriptEngineManager(); static ScriptEngine engine = factory.getEngineByName("JavaScript"); // JavaでJavaScriptのeval()関数を呼び出す static String sEval(String sExpr) { String sScript="with(Math){"+sExpr+"}"; // 「Math.」を省略可能にするため try{ return( engine.eval(sScript).toString() ); } catch(NullPointerException e){ // 関数定義でエラー防止 return(sExpr); } catch(Exception e){ return("error: "+e); } } public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); defUserFunc(); // ユーザー定義関数の設定 System.out.println("簡易関数電卓 JsCalc"); for(;;){ // 無限ループ System.out.print("> "); String sExpr = stdIn.nextLine(); // 1行分の文字列を読み込む if(sExpr.equalsIgnoreCase("@Q")) break; // 無限ループの出口:「@Q」で終了 System.out.println(" "+sEval(sExpr)); // 表示 } } // ユーザー定義関数の設定 static void defUserFunc() { String sScript=""; sEval("function radians(x){return(x/180*PI);}"); sEval("function degrees(x){return(x/PI*180);}"); sEval("function sinDeg(x) {return(sin(radians(x)));}"); sEval("function cosDeg(x) {return(cos(radians(x)));}"); sEval("function tanDeg(x) {return(tan(radians(x)));}"); // 長文用 sScript = "function sum(a){var s=0;" + "for(var i=0; i< a.length; i++) s+=a[i];" + "return(s);}"; sEval(sScript); // 後はご自由に追加してください。 } }
※参考URL
●以前、出題したプログラムクイズをJavaに翻訳してみた。
●簡易関数電卓JsCalcをGUI化してみた。JsCalcW - Java
●簡易関数電卓JsCalcをGUI化してみた。JsCalcW - Java (2)
●簡易関数電卓JsCalcをGUI化してみた。JsCalcW - Java (3)
●簡易関数電卓JsCalcWを改良してみた。
●簡易関数電卓JsCalcWを改良してみた。(2)
P.S.
ちなみに、ユーザー定義関数の設定は、次の様にしてもよいです。(^_^;
radians = function(x){return(x/180*PI);}
●マンガでわかるJavaプログラミング [単行本] 柳井 政和 (著)
- 作者: クロノス・クラウン,柳井政和
- 出版社/メーカー: 秀和システム
- 発売日: 2012/03/14
- メディア: 単行本
- クリック: 6回
- この商品を含むブログ (3件) を見る
●鉛筆パズルゲームプログラミング ナンバープレース・お絵かきパズル・ナンバークロスワードのアルゴリズム [大型本] 棚床 弘樹 (著)
鉛筆パズルゲームプログラミング ナンバープレース・お絵かきパズル・ナンバークロスワードのアルゴリズム
- 作者: 棚床弘樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2007/06/27
- メディア: 大型本
- 購入: 2人 クリック: 23回
- この商品を含むブログ (28件) を見る
- 作者: 古金谷博,藤尾聡子,鳥居隆司
- 出版社/メーカー: 日経BP社
- 発売日: 2009/12/03
- メディア: 単行本
- 購入: 1人 クリック: 11回
- この商品を含むブログ (1件) を見る
●簡単・便利 Javaサンプルプログラム集 [単行本] 林 正幸 (著)
- 作者: 林正幸
- 出版社/メーカー: 共立出版
- 発売日: 2002/11/25
- メディア: 単行本
- 購入: 1人 クリック: 13回
- この商品を含むブログ (8件) を見る
●リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS) [単行本] Seal Software (著)
リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS)
- 作者: Seal Software
- 出版社/メーカー: 工学社
- 発売日: 2003/06/01
- メディア: 単行本
- 購入: 5人 クリック: 139回
- この商品を含むブログ (32件) を見る
●Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS) [単行本] 池 泰弘 (著)
Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)
- 作者: 池泰弘
- 出版社/メーカー: 工学社
- 発売日: 2007/04/25
- メディア: 単行本
- 購入: 9人 クリック: 18回
- この商品を含むブログ (9件) を見る
●ゲームのアルゴリズム 改訂版 思考ルーチンと物理シミュレーション [単行本] 橋口 ゆうすけ (著)
ゲームのアルゴリズム 改訂版 思考ルーチンと物理シミュレーション
- 作者: 橋口ゆうすけ
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2010/04/23
- メディア: 単行本
- 購入: 2人 クリック: 22回
- この商品を含むブログ (7件) を見る