![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_05.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
ひろえないとか数値を認識とかじゃなくて、それはただのコンパイルエラーです。
Javaの文法をすべて学んではいないようですね。あせらないでまずJavaの文法を一通り学んでみてください。
コンパイルできる完全なコードの一例は次のようになります。
参考URLにエラーの意味の解説がありますので、あわせてご覧ください。
import javax.script.*;
class test1{
public static void main(String args[]){
try {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
double result = (Double)engine.eval("-2*3+8");
System.out.println(result);
} catch (ScriptException e) {
throw new RuntimeException(e);
}
}
}
参考URL:http://milkyway.merseine.nu/100java/Java/Java049 …
No.4
- 回答日時:
・ IEの
+""
問題は再起動後確認したところ消えていました。
No.3
- 回答日時:
最近では、ScriptEngineManagerを利用するという方法もありそうですが、
ここでは、アプレットによる方法ですがご紹介します。(ただし完全ではありませんが。)
JavaScriptを利用しています。
クラスJSObjectは、
%JAVA_HOME%\jre\lib\plugin.jar
に含まれているので、コンパイル時にclsasspathに追加してください。
------------------------------------------------------------
JSeval.html
------------------------------------------------------------
<html>
<head>
<title>My Applet</title>
</head>
<body>
<h1>
JSeval
</h1>
<p>
<applet code="JSeval.class" mayscript width="220" height="150">
</applet>
</p>
</body>
</html>
------------------------------------------------------------
JSeval.java
------------------------------------------------------------
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import netscape.javascript.*;
public class JSeval extends Applet implements ActionListener {
Label lb1;
TextField txt1, txt2;
Button btn1;
public void init() {
lb1 = new Label("式の入力");
add(lb1);
txt1 = new TextField(25);
add(txt1);
btn1 = new Button("計算");
btn1.addActionListener(this);
add(btn1);
txt2 = new TextField(25);
add(txt2);
}
public void actionPerformed(ActionEvent e) {
String ss;
if (e.getSource() == btn1) {
ss = txt1.getText();
JSObject win = JSObject.getWindow(this);
txt2.setText(win.eval(ss).toString());
}
}
}
------------------------------------------------------------
・ Firefoxでの実行例
2*3
2.5*4+100
Math.pow(2,3)
・ IEでの実行例(何故か、+"" が必要でした。)
2*3+""
2.5*4+100+""
Math.pow(2,3)+""
・ Firefoxでは、一度エラーを起こすと継続できない。
・ 以上、不都合な点の解明は出来ませんでした。
何か情報が得られればお知らせください。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_05.png?5a7ff87)
No.1
- 回答日時:
3行でできます。
ただし本当に任意のスクリプトを実行できてしまうので、
安全性の保証のないコードを安易に実行しないなど、
セキュリティに注意することをお勧めします。
import javax.script.*;
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
double result = (Double)engine.eval("-2*3+8");
参考URL:http://java.sun.com/javase/ja/6/docs/ja/technote …
この回答への補足
早々の回答ありがとうございます。
>double result = (Double)engine.eval("-2*3+8");
結果の表示はどうひろえばいいんでしょうか。
import javax.script.*;
class test1{
public static void main(String args[]){
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
double result = (Double)engine.eval("-2*3+8");
System.out.println(result);
}
}
test1.java:10: 例外 javax.script.ScriptException は報告されません。スローするにはキャッチまたは、スロー宣言をしなければなりません。
double result = (Double)engine.eval("-2*3+8");
これじゃひろえないです。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- 発達障害・ダウン症・自閉症 【画像あり】中3の受験期に解けなかった問題について。n,n+1,n+2,n+3…という文字式の証明と 1 2022/08/04 15:48
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- Excel(エクセル) エクセルで文字列と数字が混在する列に書式設定したい。 3 2022/12/19 09:11
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- フリーソフト OpenOffice 表計算で文字としてコピペ 2 2023/05/31 11:11
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<forEach> 内で供給された "ite...
-
eclipseに記述したjavaファイル...
-
ColabでのPytorchのエラー
-
Javaを使ってデジタル時計を作...
-
Selenium IDEでexportしたコー...
-
Javaで常駐するソフトを作って...
-
ActionForm form にnullが入っ...
-
setAttribute(String, int)は適...
-
jcpad
-
importとextendsの用い方の違い...
-
JOGLのインストール方法
-
「例外 *** は対応する try 文...
-
JavaでWindowsのタスクトレイに...
-
アプレットが初期化されていま...
-
【JAVAエラー】互換性のない型...
-
Javaを使用して定時送信をしたい
-
(急募/教えて)Java三択クイズを...
-
Javaからストアド実行(配列項目)
-
文字サイズが可変のラベル
-
【java】検索フォームの検索結...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「例外 *** は対応する try 文...
-
eclipseに記述したjavaファイル...
-
<forEach> 内で供給された "ite...
-
setAttribute(String, int)は適...
-
干支の計算で。。。
-
Javaを使ってデジタル時計を作...
-
HTMLでのTableタグデータ取得方法
-
importするには java.io.*; imp...
-
生年月日と今日の日付から年齢...
-
文字列を数式に
-
シャットダウンフックが呼ばれない
-
Javaで常駐するソフトを作って...
-
フレームの×ボタンを押しても閉...
-
Selenium IDEでexportしたコー...
-
文字サイズが可変のラベル
-
jFrameを使って複数の画面を生...
-
【java】検索フォームの検索結...
-
Java での グローバルIP取得
-
(急募)JavaカレンダーをGUI可に...
-
ファイル名を動的に生成したい
おすすめ情報