2012-12-30 220 views
0

我的Android应用程序在if声明中崩溃,我无法找到该错误。Android字符串比较,字符串

这是我的代码片段,我该如何解决它?

public String formatResult(String inVal) { 

     String tmp = inVal.substring(inVal.length() - 2, inVal.length()); 

     if (tmp.equals(".0") == true){ 

      return inVal.substring(inVal.length(),inVal.length()-2); 
     } else { 

      return inVal; 
     } 
    } 
+1

你不需要'== true','.equals'已经为你做了。 –

+2

最新的错误信息? – NimChimpsky

+0

要计算崩溃,请始终向我们显示崩溃的日志 – keno

回答

1

“inVal”可以少于2个字符。调试该项目,看inVal,在任何情况下把if语句来控制,如果inVal长于2

您可以更改:

if (tmp.equals(".0") == true) 

到:

if (tmp.equals(".0")){ 

另一件事是,你真的想回:

inVal.substring(inVal.length(),inVal.length()-2); 

,或者你想返回:

inVal.substring(inVal.length()-2, inVal.length()); 

EndIndex不能小于StartIndex。如果你想开始从头到尾2:

string a; 
for(int i = inVal.length; i>=inVal.length-2; i--) { 
    a += inVal.charAt(i); 
} 

这应该工作。

+0

嗨,我想返回inVal.substring(0,inVal.length() - 2);.谢谢 – fillibuster

1

inVal.substring(inVal.length(),inVal.length()-2);

不是很有效的,因为:

public String substring(int beginIndex, 
         int endIndex) 

IndexOutOfBoundsException - 如果将beginIndex为负,或endIndex大于此String对象的长度大,或的beginIndex大于endIndex的。

0
String a = editboxa.getText().toString(); 
String b = editboxb.getText().toString(); 
if(a.equals(b)) 
    //do something 
else 
    //do something