Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的平等胡说八道_Android_Database_Equality_Http Get - Fatal编程技术网

Android中的平等胡说八道

Android中的平等胡说八道,android,database,equality,http-get,Android,Database,Equality,Http Get,问题是,我希望从调用grabURL的网页中读取的文本与我在onPostExecute中输入到字符串lorem中的文本完全相同 但是安卓说:不,它没有 为什么我认为Android在平等方面是不对的 1 StackTrace屏幕截图: 2截图: 3您可以找到字符串lorem=lorem ipsum dolor sit amet;在我的课堂上向下,浏览我阅读文本的网页的源代码: 我的类的源代码: public class MainActivity extends Activity { /**

问题是,我希望从调用grabURL的网页中读取的文本与我在onPostExecute中输入到字符串lorem中的文本完全相同

但是安卓说:不,它没有

为什么我认为Android在平等方面是不对的

1 StackTrace屏幕截图:

2截图:

3您可以找到字符串lorem=lorem ipsum dolor sit amet;在我的课堂上向下,浏览我阅读文本的网页的源代码:

我的类的源代码:

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        grabURL("http://www.cyberweb.pp.ua/x/o.html");

    }

    public void grabURL(String url) {
        new GrabURL().execute(url);
    }

    private class GrabURL extends AsyncTask<String, Void, Void> {
        private final HttpClient Client = new DefaultHttpClient();
        private String Content;
        private String Error = null;

        protected Void doInBackground(String... urls) {
            try {

                HttpGet httpget = new HttpGet(urls[0]);
                ResponseHandler<String> responseHandler = new BasicResponseHandler();
                Content = Client.execute(httpget, responseHandler);

            } catch (ClientProtocolException e) {
                Error = e.getMessage();
                cancel(true);
            } catch (IOException e) {
                Error = e.getMessage();
                cancel(true);
            }

            return null;
        }

        protected void onPostExecute(Void unused) {

            String lorem = "Lorem ipsum dolor sit amet";

            if (Error != null) {
                Toast.makeText(MainActivity.this, Error, Toast.LENGTH_LONG)
                        .show();
            } else {

                TextView xyu = (TextView) findViewById(R.id.xyu);
                TextView xyu1 = (TextView) findViewById(R.id.xyu1);
                TextView xyu2 = (TextView) findViewById(R.id.xyu2);

                xyu.setText(Content);
                xyu1.setText(lorem);

                Log.v("lorem", lorem);
                Log.v("Content", Content);

                String eq = null;


                if (Content.length() != lorem.length()) {
                       Log.v("length?", "Different length");
                    }


                if (Content.trim().equalsIgnoreCase(lorem.trim())) {

                    xyu2.setText("EQUAL");
                    eq = "EQUAL";
                    Log.v("equal?", eq);
                }

                else {

                    xyu2.setText("NOT EQUAL");
                    eq = "NOT EQUAL";
                    Log.v("equal?", eq);
                }

            }
        }

    }
}
这个问题快把我逼疯了

有人猜会发生什么吗?提前谢谢你

最后堆栈跟踪:

问题是由网页编码引起的。将编码更改为UTF-8时,相等是正确的

不要使用==进行字符串比较

相反,它将实际检查每个字符串的内容并返回正确的结果

if (Content.equals(lorem)) {
    //etc...
编辑:如果您仍然无法获得相等值,可以尝试以下操作:

if (Content.trim().equalsIgnoreCase(lorem.trim())) {
        //etc...
这将修剪所有空白并执行检查,而不考虑大小写。您最多只能检查两个字符串。

在Java中不能使用==来比较字符串。使用相等


这里的答案非常详细地描述了原因:

尝试比较长度:

final int cl = Content.length();
final int ll = lorem.length();
if (cl != ll) {
   Log.v("TAG", "Different length (Content=" + cl + ", lorem=" + ll + ")");
}

我们可以肯定的是,Java的String.equals方法可以工作。唯一的胡说八道可能是在你的代码中…谢谢,但这不是一个原因,我已经更新了代码,它仍然不相等,这是一个很大的原因,但显然还有更多。。。可能URL行末尾有空白,请尝试:Content.trim.equalslorem.谢谢,但这不是原因,我已经更新了代码,但仍然不相等。当字符串确实不相等时,您可以尝试修剪。我同意a-C。可能有一些隐藏字符可能会模糊您的结果。制表符,换行符,等等,这是我的第一个假设,我检查了所有地方的拼写并添加了内容。trim.equalsIgnoreCaselorem.trim。。。没有任何更改。@IvanFazaniuk Content.trim.length呢!=lorem.长度?Sam的长度不同,但不相等。此问题是否与网页编码有关?@dtmilano内容比lorem多一个字符。总是即使我在网页和lorem字符串中只留下了一个字母L。@IvanFazaniuk我也只能假设存在某种类型的空白字符,trim不会删除它。但我不知道那是什么。。。这可能会有所帮助:。如果只有一个尾随字符,则可以使用Content=Content.substring0,Content.length-1;但这假设角色将永远在那里…谢谢你们所有人给我的想法方向的建议,我现在要寻找那个秘密符号: