0

私の Android アプリはステートメント中にクラッシュしif、間違いを見つけることができません。

これが私のコードのスニペットです。どうすれば修正できますか?

    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;
         }
    }
4

3 に答える 3

1

「inVal」は2文字より短くすることができます。プロジェクトをデバッグし、inValを監視します。いずれの場合も、inValが2より長いかどうかを制御するためにifステートメントを配置します。

あなたになら変えられる:

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

に:

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

もう1つは、本当に戻りたいですか。

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

これは機能するはずです。

于 2012-12-30T20:42:09.487 に答える
1

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

次の理由からあまり有効ではありません:

public String substring(int beginIndex,
                        int endIndex)

IndexOutOfBoundsException - beginIndex が負の場合、または endIndex がこの String オブジェクトの長さより大きい場合、またはbeginIndex が endIndex より大きい場合。

于 2012-12-30T20:40:00.923 に答える
0
String a = editboxa.getText().toString();
String b = editboxb.getText().toString();
if(a.equals(b))
    //do something
else
    //do something
于 2012-12-30T20:44:50.333 に答える