導航:首頁 > 編程語言 > java8scriptengine

java8scriptengine

發布時間:2023-05-10 01:57:42

java 循環演算法

importjava.text.MessageFormat;

importjavax.script.ScriptEngine;
importjavax.script.ScriptEngineManager;
importjavax.script.ScriptException;

publicclassT{

梁盯privatestaticfinalStringT="{0}+13*{1}/{2}+{3}+12*{4}-{5}-11+{6}*{7}/{8}-10";

publicstaticvoidmain(String[]args)throwsScriptException{
int[]a=initArray(9);
p(0,a);
}

privatestaticvoide(int[]a)throwsScriptException{
Stringe=MessageFormat.format(T,a[0],a[1],a[2],a[3],橡備和a[4],a[5],
a[6],a[7],a[8]);
ScriptEngineManagermanager=newScriptEngineManager();
ScriptEngineengine=manager.getEngineByName("javascript");
Numbern=(Number)engine.eval(e);
if(n.intValue()==66&&n.doubleValue()==n.intValue()){
System.out.println(e+"="+66);
}
}

privatestaticint[]initArray(intn){
int[]a=newint[n];
for(inti=0;i<a.length;i++){
a[i]=i+1;
}
returna;
}

privatestaticvoidp(inti,int[]a)throwsScriptException{
if(i==a.length-1){
e(a);
return;
}

p(i+滾爛1,a);

for(intj=i+1;j<a.length;j++){
swap(i,j,a);
p(i+1,a);
swap(j,i,a);
}
}

privatestaticvoidswap(inti,intj,int[]a){
inttemp=a[i];
a[i]=a[j];
a[j]=temp;
}
}

Ⅱ 【高分懸賞】Java實現一個方法計算一個只有加減法運算的表達式的值

這個問題很簡單,只有加減運算,沒有運算優先順序,不需要用到堆棧就可以。下面是代碼

publicclassApp{

publicstaticintA(Stringex)throwsException{

intresult=0;

Stringstr="";

for(inti=0;i<ex.length();i++){

charch=ex.charAt(i);

if(ch>='0'&&ch<='9'){

str+=ch;

}elseif(ch=='+'||ch=='-'){

result+=Integer.parseInt(str);
str=""+ch;

}elseif(ch==''){
continue;
}else{
thrownewException("無效的表達式。");
}
}

if(str!=""){
result+=Integer.parseInt(str);
}

returnresult;
}

publicstaticvoidmain(String[]args)throwsException{

intresult=A("1-2+3+4-23");

System.out.println("result="+result);
}
}

運行結果:

Ⅲ 有沒有哪個Java 8妙用Nashorn引擎的好例子

使用Java8,Nashorn大大提高了JavaScript 引擎引入,以取代現有的Nashorn Java腳本引擎。提供2至10倍更好的性能,因為它直接編譯代碼在存儲器,並傳遞到位元組碼JVM.Nashorn使用invokedynamics函數,在Java7引入以提高性能。
jjs
對於Nashorn引擎,JAVA8引入了一個新的命令行工具,JJS到控制台執行Java腳本代碼。
解讀js文件
創建並保存sample.js在 C:> JAVA 文件夾。
sample.jsprint('Hello World!');

打開控制台並使用下面的命令。
C:\JAVA>jjs sample.js

看到結果
Hello World!

JJS在交互模式
打開控制台並使用下面的命令
C:\JAVA>jjs
jjs> print("Hello, World!")
Hello, World!
jjs> quit()
>>

傳遞參數
打開控制台並使用下面的命令。
C:\JAVA> jjs -- a b c
jjs> print('letters: ' +arguments.join(", "))
letters: a, b, c
jjs>

在JAVA調用JavaScript
使用ScriptEngineManager,JavaScript代碼用Java編寫可以被調用。
示例
選擇使用任何編輯器創建以下java程序在 C:/> JAVA
Java8Tester.javaimport javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class Java8Tester {
public static void main(String args[]){
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn");
String name = "Mahesh";

Integer result = null;
try {
nashorn.eval("print('" + name + "')");
result = (Integer) nashorn.eval("10 + 2");
}catch(ScriptException e){
System.out.println("Error executing script: "+ e.getMessage());
}
System.out.println(result.toString());
}
}

驗證結果
使用javac編譯器編譯如下類
C:\JAVA>javac Java8Tester.java

現在運行Java8Tester看到的結果
C:\JAVA>java Java8Tester

看到結果
Mahesh
12

從JavaScript調用Java
下面的例子將展示如何導入和使用Java類的Java腳本。
創建並保存 sample.js 在 c: > JAVA 文件夾.
sample.jsvar BigDecimal = Java.type('java.math.BigDecimal');

function calculate(amount, percentage) {
var result = new BigDecimal(amount).multiply(
new BigDecimal(percentage)).divide(
new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_EVEN);
return result.toPlainString();
}
var result = calculate(568000000000000000023,13.9);
print(result);

打開控制台並使用下面的命令。
C:\JAVA>jjs sample.js

看到結果
78952000000000000003.20

Ⅳ java如何調用javascript的函數

[java] view plainprint?
<span style="font-size:18px;">package suggestion16;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class ScriptText {

public static void main(String[] args) throws FileNotFoundException, ScriptException, Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
Bindings bind = engine.createBindings();
bind.put("factor", 2); //這里綁定一個factor的值為2.
engine.setBindings(bind,ScriptContext.ENGINE_SCOPE);
Scanner input = new Scanner(System.in);
while(input.hasNext())
{
int first = input.nextInt();
int sec = input.nextInt();
System.out.println("輸入的參數為:"+ first+ " , " + sec);
engine.eval(new FileReader("E:/cal.js"));
if(engine instanceof Invocable)
{
Invocable in = (Invocable)engine;
Double result = (Double)in.invokeFunction("cal",first,sec);
System.out.println("運算結果為:" + result.intValue());
}
}
}

}
</span>

其中的「E:/cal.js」就是我們文件的保存路徑。並且這個主函數可以循環的輸入。
我們運行一下這個程序得到的結果如下:
[html] view plainprint?
<span style="font-size:18px;">1
2
輸入的參數為:1 , 2
運算結果為:1
</span>
上面也就是 調用了 1 + 2 - 2 = 1 ,所以結果為1
我們將js文件中的function方法改變下,改編為下面的函數:
[javascript] view plainprint?
<span style="font-size:18px;">function cal(var1,var2)
{
return var1+var2*factor;
}</span>

Ⅳ java怎麼利用動態編譯求四則運算式的結果貼代碼的最後注釋一下,免得我看不懂,求高手大神來回答

^這種東西都不需要動態編譯,你用javax.script.ScriptEngine這玩意就可以了

具體代碼版
ScriptEngineManager factory = new ScriptEngineManager();
權ScriptEngine engine = factory.getEngineByName("javascript");
System.out.println(engine.eval("1+2*3+4^2-(2-8*0.12)+1-2^1/2+5/12-0.12/0.21"));

Ⅵ java字元串轉運算符

樓主想要的,不就是js里的eval么……非要弄得這么復雜。
首先下載:http://www.beanshell.org/bsh-core-2.0b4.jar
在你類里寫:
String s="3>2";// 這里你可以自己拼內一下字元串

Interpreter bs=new Interpreter();
try {
System.out.println(bs.eval(s));
} catch (EvalError e) {
e.printStackTrace();
}

這樣容就可以,字元串可以為更復雜的運算,不單單是邏輯運算

Ⅶ Java中怎麼能實現從鍵盤輸入幾個數字後進行四則運算

packagetest;

importjava.util.Scanner;
importjavax.script.ScriptEngine;
importjavax.script.ScriptEngineManager;
importjavax.script.ScriptException;

publicclassA1
{
publicstaticvoidmain(String[]args)
{
=newScriptEngineManager();
ScriptEnginese=sem.getEngineByName("js");
Scannerscanner=newScanner(System.in);
System.out.println("輸入幾個數字後進行四則運算:(直接回車退出程序)");
Objectresult=null;
while(scanner.hasNextLine())
{
try
{
Stringline=scanner.nextLine();
if("".equals(line))
{
break;
}
result=se.eval(line);
System.out.println(result);
}
catch(ScriptExceptione)
{
System.err.println("輸入不正確!重新輸入:");
continue;
}
}
scanner.close();
}
}

Ⅷ 請問,java中怎麼用html和js寫出一個能實現數字排序的程序

<script>

function wr(str){

document.write(str+"<br><br>");
}

function sort(a,b,c,d,e){

var arr=new Array();
arr.push(a);
arr.push(b);
arr.push(c);
arr.push(d);
arr.push(e);
arr.sort( function(x, y){
if (x >余緩 y)
return 1;
if (x < y)
return -1;
}
);
return arr;
}
var result=sort(2,5,1,8,11);//隨便輸入5個數字

wr(result);

</script>

以上是JavaScript 代碼,java中可以用 script引擎 使用返罩JavaScript 代漏毀鬧碼
ScriptEngineManager factory = new ScriptEngineManager();

ScriptEngine engine = factory.getEngineByName("js");

Ⅸ java實現js的中一樣的函數方法

packageknow.t5;
{
publicstaticStringencode(Stringinput)
{
StringBuildersb=newStringBuilder(input.length()+16);
appendEncoded(sb,input);
returnsb.toString();
}
(StringBuildersb,Stringinput)
{
intsafe[]=SAFE_ASCII;
inti=0;
intc;
for(intlen=input.length();i<len;i+=Character.charCount(c))
{
c=input.codePointAt(i);
if(c<=127)
{
if(safe[c]!=0)
sb.append((char)c);
else
appendSingleByteEncoded(sb,c);
}else
{
appendMultiByteEncoded(sb,c);
}
}
returnsb;
}
(StringBuildersb,intvalue)
{
sb.append('%');
sb.append(HEX[value>>4]);
sb.append(HEX[value&15]);
}
(StringBuildersb,intvalue)
{
if(value<2048)
{
appendSingleByteEncoded(sb,192|value>>6);
appendSingleByteEncoded(sb,128|value&63);
}else
if(value<65536)
{
appendSingleByteEncoded(sb,224|value>>12);
appendSingleByteEncoded(sb,128|value>>6&63);
appendSingleByteEncoded(sb,128|value&63);
}else
{
appendSingleByteEncoded(sb,240|value>>18);
appendSingleByteEncoded(sb,128|value>>12&63);
appendSingleByteEncoded(sb,128|value>>6&63);
appendSingleByteEncoded(sb,128|value&63);
}
}
privatestaticfinalintSAFE_ASCII[];
privatestaticfinalcharHEX[]="0123456789ABCDEF".toCharArray();
static
{
SAFE_ASCII=newint[128];
for(inti=97;i<=122;i++)
SAFE_ASCII[i]=1;
for(inti=65;i<=90;i++)
SAFE_ASCII[i]=1;
for(inti=39;i<=57;i++){
if(i==43||i==44||i==47)
continue;
SAFE_ASCII[i]=1;
}
SAFE_ASCII[33]=1;
SAFE_ASCII[95]=1;
SAFE_ASCII[126]=1;
}
}

encodeURIComponent函數可以用上面的類方法代替,unescape可以用任意URLDecoder代替,btoa可以用任意Base64工具代替(參數為byte[]時需將字元串按utf8編碼),這個方案你可以試試效果

Ⅹ 用java設計,鍵盤輸入一個四則運算等式,判斷運算是否正確

		Scannersc=newScanner(System.in);
Stringstr=sc.nextLine();
String[]arr=str.split("=");//根據等號分隔等式兩邊的字元串
ScriptEngineManagermanager=newScriptEngineManager();
ScriptEngineengine=manager.getEngineByName("js");

try{
Objectresult0=engine.eval(arr[0]);
Objectresult1=engine.eval(arr[1]);
System.out.println("等式左邊計算結果:"+result0);
System.out.println("等式右邊計算結果:"+result1);
if(result0==result1){
System.out.println("運算正確");
}else{
System.out.println("運算錯誤");
}
}catch(ScriptExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

主要使用的時候下面這些庫

閱讀全文

與java8scriptengine相關的資料

熱點內容
微信兔子甩耳朵 瀏覽:998
android藍牙傳文件在哪裡 瀏覽:354
蘋果6s軟解是真的嗎 瀏覽:310
c語言代碼量大 瀏覽:874
最新網路衛星導航如何使用 瀏覽:425
以下哪些文件屬於圖像文件 瀏覽:774
zycommentjs 瀏覽:414
確認全血細胞減少看哪些數據 瀏覽:265
文件有哪些要求 瀏覽:484
cad打開時會出現兩個文件 瀏覽:65
什麼是轉基因網站 瀏覽:48
手柄設備有問題代碼43 瀏覽:921
怎麼他么怎麼又網路了 瀏覽:649
java會出現內存泄露么 瀏覽:617
蘋果4s鎖屏後怎麼還顯示歌曲 瀏覽:207
鴻蒙系統文件管理哪些可以刪除 瀏覽:550
ubuntuqt創建工程沒有配置文件 瀏覽:126
網站登錄變成其他網站怎麼處理 瀏覽:202
ug數控編程學校有哪些 瀏覽:203
java圖片上傳顯示 瀏覽:402

友情鏈接