将字符串转换为 int 以在 java android 中查找结果

Converting string into int to find a result in java android

如何将 +-/* 等字符从 String 转换为 int, 我尝试使用 int 找到一些结果,但是这个字符 +-/* 让它出错, 当我尝试从 String 转换为 int

通常当您键入 int i = 12+12 时,它会显示 24 的结果, 但是当我尝试将它从 String 转换为 int 时,我的应用程序强制关闭,有什么建议吗?谢谢

简单的方法应该是使用 ScriptEngine 库 -

转到 build.gradle(模块:应用程序)。 添加此依赖项 - implementation 'io.apisense:rhino-android:1.0'

然后要计算任何字符串的值,请执行此操作 -

所有操作使用相同的代码(+ - * \ %),只需更改字符串值即可。

    String s = "12+12";
    ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("rhino");
    try {
        Object result = scriptEngine.eval(s);
        System.out.println("Result: "+result); // Result(Output) is: 24
    } catch (ScriptException e) {
        e.printStackTrace();
    }

示例 - 当用户在 EditText 12+12 中输入时,将其放入 String s = editText.getText().toString()

调用方法 - String result = calculateResult(s);

方法是-

private String calculateResult(String s) {
        ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("rhino");
        Object result = null;
        try {
            result = scriptEngine.eval(s);
        } catch (ScriptException e) {
            e.printStackTrace();
        }
        return result.toString();   // returns 24
    }

而不是 Integer.parseInt(getTextView); ,您必须首先从 TextView 获得的字符串中提取数字,然后将它们分别转换为整数,然后进行算术运算。

按如下操作。

equal.setOnClickListener(new View.OnClickListener() {
    @Override             
    public void onClick(View v) {
        String getTextView = textView.getText().toString();
        String[] numbers = getTextView.split("+");
        int value = Integer.parseInt(numbers[0]) + Integer.parseInt(numbers[1]);
        textView.setText(value);  
    }
}

更新 替换

String[] numbers = getTextView.split("+");

String[] numbers = getTextView.split("\+");

防止悬空元字符错误。

按如下操作:

// Split the string from textView on '+'. In order to specify optional space before/after '+', use \s*
String[] nums = textView.getText().toString().split("\s*\+\s*");

// Parse each number into an integer, add them and then set the result into textView
textView.setText(Integer.parseInt(nums[0]) + Integer.parseInt(nums[1]));