导航:首页 > 编程语言 > 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相关的资料

热点内容
桌面云配置文件分离 浏览:505
iphone5如何升级4g网络 浏览:5
团购是在哪个app 浏览:897
打开多个word文档图片就不能显示 浏览:855
腾讯新闻怎么切换版本 浏览:269
app安装失败用不了 浏览:326
桌面文件鼠标点开会变大变小 浏览:536
手机误删系统文件开不了机 浏览:883
微信兔子甩耳朵 浏览:998
android蓝牙传文件在哪里 浏览:354
苹果6s软解是真的吗 浏览:310
c语言代码量大 浏览:874
最新网络卫星导航如何使用 浏览:425
以下哪些文件属于图像文件 浏览:774
zycommentjs 浏览:414
确认全血细胞减少看哪些数据 浏览:265
文件有哪些要求 浏览:484
cad打开时会出现两个文件 浏览:65
什么是转基因网站 浏览:48
手柄设备有问题代码43 浏览:921

友情链接