任何数字运算符都会出现无效的 Int“+”
Invalid Int "+" happens with any numerical operator
我正在尝试 Android 开发,对于我的第一个应用程序..双关语,我决定使用计算器。所以我的问题是任何算术运算符都被评估为数字数据类型并使应用程序崩溃。我在其他论坛上看到过这个讨论,但其中大部分都是语法问题,我在这里看不到。
无论如何,这是我的代码,我们将不胜感激。
public void btnEqual_Click(View v){
TextView tv = (TextView)findViewById(R.id.txtInput);
TextView tv2 = (TextView)findViewById(R.id.txtOutput);
String s = tv.getText().toString();
Integer first;
Integer second;
Number result;
Integer x;
for(Integer i = 0; i <= s.length() - 1 ; i++){
switch(s.charAt(i))
{
case '/': x = s.indexOf("/");
first = Integer.valueOf(s.substring(0, x));
second = Integer.valueOf(s.substring(x+1, s.length()));
result = first / second;
tv2.setText(result.toString());
break;
case '*': x = s.indexOf("*");
first = Integer.valueOf(s.substring(0, x));
second = Integer.valueOf(s.substring(x+1, s.length()));
result = first * second;
tv2.setText(result.toString());
break;
case '-': x = s.indexOf("-");
first = Integer.valueOf(s.substring(0, x));
second = Integer.valueOf(s.substring(x+1, s.length()));
result = first - second;
tv2.setText(result.toString());
break;
case '+': x = s.indexOf("+");
first = Integer.valueOf(s.substring(0, x));
second = Integer.valueOf(s.substring(x+1, s.length()));
result = first + second;
tv2.setText(result.toString());
break;
default: break;
}
if(!tv2.getText().toString().isEmpty()){break;}
}
这是我遇到的错误
Caused by: java.lang.NumberFormatException: Invalid int: "+"
您必须在子字符串中使用 x+1
,以从数值中删除运算符符号:
Integer.valueOf(s.substring(x+1, s.length() - 1));
我正在尝试 Android 开发,对于我的第一个应用程序..双关语,我决定使用计算器。所以我的问题是任何算术运算符都被评估为数字数据类型并使应用程序崩溃。我在其他论坛上看到过这个讨论,但其中大部分都是语法问题,我在这里看不到。 无论如何,这是我的代码,我们将不胜感激。
public void btnEqual_Click(View v){
TextView tv = (TextView)findViewById(R.id.txtInput);
TextView tv2 = (TextView)findViewById(R.id.txtOutput);
String s = tv.getText().toString();
Integer first;
Integer second;
Number result;
Integer x;
for(Integer i = 0; i <= s.length() - 1 ; i++){
switch(s.charAt(i))
{
case '/': x = s.indexOf("/");
first = Integer.valueOf(s.substring(0, x));
second = Integer.valueOf(s.substring(x+1, s.length()));
result = first / second;
tv2.setText(result.toString());
break;
case '*': x = s.indexOf("*");
first = Integer.valueOf(s.substring(0, x));
second = Integer.valueOf(s.substring(x+1, s.length()));
result = first * second;
tv2.setText(result.toString());
break;
case '-': x = s.indexOf("-");
first = Integer.valueOf(s.substring(0, x));
second = Integer.valueOf(s.substring(x+1, s.length()));
result = first - second;
tv2.setText(result.toString());
break;
case '+': x = s.indexOf("+");
first = Integer.valueOf(s.substring(0, x));
second = Integer.valueOf(s.substring(x+1, s.length()));
result = first + second;
tv2.setText(result.toString());
break;
default: break;
}
if(!tv2.getText().toString().isEmpty()){break;}
}
这是我遇到的错误
Caused by: java.lang.NumberFormatException: Invalid int: "+"
您必须在子字符串中使用 x+1
,以从数值中删除运算符符号:
Integer.valueOf(s.substring(x+1, s.length() - 1));