【问题标题】:If condition isn't met?如果条件不满足?
【发布时间】:2012-03-03 17:50:25
【问题描述】:

我想逐个字符地读取数组中的String

String ss = "makassar";
String my_array[] = ss.split("");
for (int i = 1; i < ss.length()+1; i++) {
  if (my_array[i]=="m") {
     Toast toast = Toast.makeText(this, "Array is M", Toast.LENGTH_SHORT);
     toast.setGravity(Gravity.CENTER, 0, 0);
     toast.show();
     // Toast not show
  }
}

Toast 未显示。为什么?有什么想法吗?

【问题讨论】:

  • 顺便说一句,您可能需要重新考虑您的花括号策略。
  • @summea 我似乎有很多不同的方法来做牙套,但没有什么比这更难读了。
  • @summea - 仅仅因为他碰巧喜欢 Horstmann 风格并没有错。
  • @AndrewMarshall - 这是一种众所周知的风格,只是在我的经验中没有被广泛使用。
  • @BrianRoach 没说错。只是建议一些(可能)更具可读性的东西,比如:programmers.stackexchange.com/questions/2715/…

标签: java android arrays string character


【解决方案1】:

您应该使用equals() 而不是operator== 来比较字符串。

operator== 检查对象的身份 [如果左右是同一个对象],而equals() 检查相等 [如果两个字符串相等彼此]。

改变这个:

if (my_array[i]=="m")

到这里:

if ("m".equals(my_array[i]))

另外,请注意my_array[1] 是第二个元素,而不是第一个元素,因此您可能希望从i = 0 而不是i = 1 开始

【讨论】:

  • 哇.. 非常感谢伙计.. 哦,数组开始索引 = 0;对不起,因为我是新手..
【解决方案2】:

将 for 循环更改为循环 i0 到小于 ss.length()

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2018-08-24
    • 2019-07-19
    相关资源
    最近更新 更多