预期的价值,错误的结果

0 java android

在阅读了有关我的应用程序的一些统计数据后,我发现更新75%的用户需要一个多月的时间.由于所有更新都非常重要,我已经提出了一个应用内警报,告诉用户有一个待更新的更新.

有一个包含实际应用版本(18)的文本文件,存储在由该DownloadText()方法获取的网络服务器中.此号码进入isUpdatetxt并从不可显示的字符中提取.substring(1, 3).基本上,只剩下"18"了.

但是有我的问题:isUpdatetxt == "18"返回false,当它不应该时.

private class GetUpdate extends AsyncTask<Void, Void, Void>
{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Toast.makeText(getApplicationContext(), "Vérification de mise à jours", Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onPostExecute(Void result) {

        /** For debug reference*/
        Toast.makeText(getApplicationContext(), "*" + isUpdatetxt + "*" + " " + (isUpdatetxt.length()), Toast.LENGTH_LONG).show(); 
        if(isUpdatetxt == "18"){
            alertDialog.show();
        }
    }

    @Override
    protected Void doInBackground(Void... params) {
        isUpdatetxt = DownloadText(updateURL);
        isUpdatetxt = isUpdatetxt.substring(1, 3);
        return null;
    }

}
Run Code Online (Sandbox Code Playgroud)

小智 6

如果要比较Java中的字符串,则应该使用.equals().

在Java中使用==比较字符串时,可以比较引用.

所以你的if语句将是这样的:

if(isUpdatetxt.equals("18")){
    alertDialog.show();
}
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢C#的一个原因......`==`实际上可以像你期望的那样使用字符串. (2认同)