Java表达式和使用eval删除DOT之后的所有内容
我尝试了下面的代码,但这里似乎有一个小问题 通过使用上面的代码,我得到如下结果Java表达式和使用eval删除DOT之后的所有内容,java,Java,我尝试了下面的代码,但这里似乎有一个小问题 通过使用上面的代码,我得到如下结果 C:\temp>java -jar test.jar 2.0 6.0 C:\temp> 我怎么能只有“2”和“6”而不是我得到的呢?再次感谢 “js”脚本引擎不进行转换:它将每个数字视为doubles 这样,您就必须格式化那些结果对象(因为它们是doubles)。一种可能的方法是使用类: JavaScript没有整数,只有数字和数字是浮点数。下面的代码利用Java的Formatter()声明输出不应有
C:\temp>java -jar test.jar
2.0
6.0
C:\temp>
我怎么能只有“2”和“6”而不是我得到的呢?再次感谢 “js”脚本引擎不进行转换:它将每个数字视为double
s
这样,您就必须格式化那些结果
对象(因为它们是double
s)。一种可能的方法是使用类:
JavaScript没有整数,只有数字和数字是浮点数。下面的代码利用Java的Formatter()声明输出不应有小数位数。如果要将其转换为int,可以利用Number具有intValue()方法这一事实 如果你沉迷于JavaScript,你应该阅读Crockford的“JavaScript,好的部分”。他很好地介绍了JavaScript边缘案例:
导入javax.script.ScriptEngine;
导入javax.script.ScriptEngineManager;
导入javax.script.ScriptException;
公共类JavaScriptEval{
公共静态void main(字符串[]args){
ScriptEngineManager管理器=新建ScriptEngineManager();
ScriptEngine=manager.getEngineByName(“js”);
字符串[]数组={“-1+3”,“10-4”};
for(int i=0;i
Ha!欢迎使用JavaScript。没有整数。只有一个数字。此外,所有的数字本质上都是浮点数(或者双倍,我不记得了……我只知道没有整数)。你想去掉小数点吗?您需要将这些子项转换为int,或者将一些子项转换为不显示小数点的数字格式。@BobKuhar谢谢!我试着转换成INT或者取indexOf(“.”)之前的值,但是没有运气。。。你能给我举个例子吗?我没有主意了……就是这样!这就是答案!Stack说我可以在3分钟内接受答案,因为你发布了它。。。我能做点什么来接受它吗。。我想你所能做的就是等一等,然后你就可以选择接受了。
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String[] array = {"-1+3", "10-4"};
DecimalFormat df = new DecimalFormat("#.#");
StringBuilder result = new StringBuilder(array.length);
for (int i = 0; i < array.length; i++) {
Object results = engine.eval(array[i]);
System.out.println(df.format(results));
}
}
2
6
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class JavaScriptEval {
public static void main( String[] args ) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName( "js" );
String[] array = { "-1+3", "10-4" };
for ( int i = 0; i < array.length; i++ ) {
try {
Object results = engine.eval( array[i] );
// http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html
String resultsAsString = String.format( "%.0f", results );
// Naked cast can get you in trouble
int resultsAsint = ( (Number) results ).intValue();
System.out.println( "results_as_string: " + resultsAsString + ", results_as_int: " + resultsAsint );
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
}