滥用if语句?

时间:2014-06-05 13:37:27

标签: java android if-statement

我对android非常新,我很困惑。我试图说明对于变量x(可以是a,b或c),有一个相应的整数值(即0,1和2)

    String mpee = x;
          int mpef = 0;
          int mpev = 0;

        if (mpee == "a") { mpef = mpev + 0; }
        if (mpee == "b") { mpef = mpev + 1; }
        if (mpee == "c") { mpef = mpev + 2; }

       int mpp = mpef;

输出将为int mpp。就Eclipse而言,代码没有问题,但是当我运行它时,应用程序会挂起。以下是logcat。

06-05 13:29:49.014: E/AndroidRuntime(1608): FATAL EXCEPTION: main
06-05 13:29:49.014: E/AndroidRuntime(1608): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.exa.huy/com.example.exa.huy}: android.content.res.Resources$NotFoundException:
String resource ID #0x0
06-05 13:29:49.014: E/AndroidRuntime(1608):     at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
06-05 13:29:49.014: E/AndroidRuntime(1608):     at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
06-05 13:29:49.014: E/AndroidRuntime(1608):     at 
android.app.ActivityThread.access$600(ActivityThread.java:141)
06-05 13:29:49.014: E/AndroidRuntime(1608):     at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
06-05 13:29:49.014: E/AndroidRuntime(1608):     at 
android.os.Handler.dispatchMessage(Handler.java:99)
06-05 13:29:49.014: E/AndroidRuntime(1608):     at android.os.Looper.loop(Looper.java:137)

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你必须改变你比较字符串的方式 - 因为String是一个对象,它有一个内置的比较方法equals(),其中输入是你想要比较你的字符串的字符串。使用==比较它们是否是相同的对象而不是它们的字符串匹配,这看起来不像您打算做的那样。此外,if-else块可能比3个额外语句更好,就像填充if条件一样,它不会费心检查其余条件,并且在您的情况下将工作,因为每个条件是互斥的。

String mpee = x;
      int mpef = 0;
      int mpev = 0;

    if (mpee.equals("a")) { mpef = mpev + 0; }
    else if (mpee.equals("b")) { mpef = mpev + 1; }
    else if (mpee.equals("c")) { mpef = mpev + 2; }

   int mpp = mpef;

从LogCat看起来你被称为你无法找到的参考。请发布更多代码,以便我们确切地知道错误是什么。在这种情况下,您似乎使用整数值0调用引用,该值不存在。您是否尝试在布局中引用某个视图?