【问题标题】:Android - If condition is not working correctlyAndroid - 如果条件无法正常工作
【发布时间】:2012-01-21 20:08:21
【问题描述】:

任何人都可以找出我在这里做的错误是什么...... str 中的值在任何地方都打印为 true,但它仍然会出现在 else 中。 提前致谢

         String str = inputStreamToString(response.getEntity().getContent()).toString();
        Log.w("gotit signup response from web", str);


        if(str.toString().equalsIgnoreCase("true"))
        {

            // GO TO HOMEPAGE
            Intent j = new Intent();
            j.setClassName("com.test.babynames", "com.test.babynames.Home");
           startActivity(j);


        }else
        {
            Log.w("gotit Signup .... ",str);
            Log.w("gotit Signup .... ", "FALSE");
            result.setText(str);                
        }

【问题讨论】:

  • 你为什么这样做:str.toString().equalsIgnoreCase( 而不是str.equalsIgnoreCase(
  • str 已经是字符串了,为什么还要使用.toString() 方法呢? str 周围有空格吗? @Kimi 这个docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html 说 String.toString() 返回字符串本身。
  • 您应该对其进行修剪,以确保您的“真实”值之后没有空格。

标签: java android string if-statement


【解决方案1】:

可能是因为它包含空格或其他不可见字符。尝试将其打印在分隔符中,和/或使用trim() 方法删除字符串开头和结尾的空白字符。

如果这仍然不起作用,打印字符串中每个字符的数值,并对“true”执行相同的操作,以检测它们的不同之处:

for (char c : s.toCharArray()) {
    System.out.println((int) c);
}

正如 cmets 中所说,在 String 上调用 toString() 没有任何意义。 String 类覆盖Object.toString() 以返回自身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2014-11-07
    • 1970-01-01
    相关资源
    最近更新 更多