【问题标题】:Android with java安卓与java
【发布时间】:2015-10-02 16:40:57
【问题描述】:

有一个我试图理解的Java语言的android应用程序(Android Studio)的sn-p代码,当我用粗体突出显示行代码时,有数字17作为数组的索引,我尝试了很多但是我不明白那个数字是什么,这是sn-p代码


protected void onPostExecute(String result)
    {
        **if(result == "0")**
        {
            Context context = getApplicationContext();
            CharSequence text = "Invalid IP address";
            int duration = Toast.LENGTH_LONG;
            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
        }
        else
        {
            char[] charArray = result.toCharArray();
            Context context = getApplicationContext();
            int duration = Toast.LENGTH_LONG;
            **if(charArray[17]=='0')**
            {

                CharSequence text = "Invalid Password";
                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
                _logged_in = false;
            }
            **if(charArray[17]=='1')**
            {
                CharSequence text = "You logged in successfully";
                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
                _logged_in = true;
                startActivity(intent);
            }
        }

提前致谢

【问题讨论】:

  • 表示charArray的第18个字符,所以result的第18个字符。
  • 这做得相当糟糕 - 有两件事很突出。首先,它应该是 result.equals("0") 而不是 result === "0"。其次,确定成功的两个 if 语句是互斥的,因此第二个 [if(charArray[17]=='1')] 应该是 'else if' 而不是 'if'。
  • 绝对应该修复提到的字符串问题。此外,结果的第 18 个字符似乎存储了登录是否成功以及 IP 地址是否有错误。我猜所有这些都在 AsyncTask 的末尾。不是我最喜欢的实现。结果应该只是一个常量整数或更好的枚举。

标签: java android arrays android-studio


【解决方案1】:

不要使用

if(result == "0")

如果您使用的是String,您应该使用:

   if(result.equals("0"))

还有

if(charArray[17]=='0')

表示charArray 是一个数组,并且您正在获取索引=17 的元素。注意第一个索引是0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多