Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Java表达式和使用eval删除DOT之后的所有内容_Java - Fatal编程技术网

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();
            }
        }
    }
}