Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中编译java代码_Java_Android_Linux - Fatal编程技术网

如何在android中编译java代码

如何在android中编译java代码,java,android,linux,Java,Android,Linux,可能重复: 我需要计算一个包含有效Java代码的字符串 我应该能够从String code=“Math.abs(2*3);”中获得6这听起来是一个非常有趣的想法,我能问一下您的应用程序的目的是什么吗 最好的办法是建立一个您将支持的已知模式的字典 我的第一个想法是,您应该创建一个接受模式的ArrayList。例如: ArrayList<String> acceptedPatterns = new ArrayList<String>(); acceptedPatterns.

可能重复:

我需要计算一个包含有效Java代码的字符串


我应该能够从
String code=“Math.abs(2*3);”中获得
6

这听起来是一个非常有趣的想法,我能问一下您的应用程序的目的是什么吗

最好的办法是建立一个您将支持的已知模式的字典

我的第一个想法是,您应该创建一个接受模式的ArrayList。例如:

ArrayList<String> acceptedPatterns = new ArrayList<String>();
acceptedPatterns.add("math.abs");
acceptedPatterns.add("math.acos");
此时,您的foundPattern变量中将包含“Math.abs”

然后,您可以使用此方法如何工作的知识来计算它。我想不出一个超级高效的方法,但一个基本的方法,至少可以让你走,就像一个大的if/else语句:

int result = 0;
if (foundPattern.contains("Math.abs"){
   result = computeMathAbs(myStringFromInput);
}else if (foundPattern.contains("Math.acos"){
   // etc
}
然后在您的computeMathAbs方法中,您将执行以下操作:

private int computeMathAbs(String input){
   int indexOfBracket = input.indexOf("(");
   int indexOfCloseBracket = input.indexOf(")");
   String value = input.subString(indexOfBracket,indexOfCloseBracket);
   int valueInt = computeFromString(value);
   int result = Math.abs(valueInt);
   return result;
}
然后可以显示传递回的结果

computeFromString()方法将执行类似的操作,查找*符号或其他符号,并将其转换为类似于abs示例的乘法

很明显,这是一个基本的例子,所以一次只能计算一个java方法,我认为一次编写多个方法的复杂性是相当困难的


您还需要添加大量的错误处理,并认识到用户可能无法进入完美的java。可以使用蠕虫。

您可以使用
Groovy

导入groovy.util.Eval;
... 
HashMap params=新的HashMap();
参数put(“a”,2);
参数put(“b”,3);
整数res=(Integer)Eval.me(“param”,params,“Math.abs(param.a*param.b)”;
System.out.println(“带参数的res=“+res”);
System.out.println(“res without params=“+Eval.me”(“Math.abs(2*3)”);

什么???你在Java编程方面有什么基础吗?试试看,为什么不直接用Android?1/?2/您对java编译有什么看法吗?问题是,为什么您不赞成它?
private int computeMathAbs(String input){
   int indexOfBracket = input.indexOf("(");
   int indexOfCloseBracket = input.indexOf(")");
   String value = input.subString(indexOfBracket,indexOfCloseBracket);
   int valueInt = computeFromString(value);
   int result = Math.abs(valueInt);
   return result;
}
import groovy.util.Eval;

... 

    HashMap<String, Object> params = new HashMap<String, Object>();
    params.put("a", 2);
    params.put("b", 3);

    Integer res = (Integer) Eval.me("param", params, "Math.abs(param.a * param.b)");

    System.out.println("res with params = " + res);

    System.out.println("res without params = " + Eval.me("Math.abs(2*3)"));