将字符串转换为 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]));
如何将 +
、-
、/
、*
等字符从 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]));