0

我有一个字符串"sss"和一个字符数组{'s','s','s'}。我将数组转换为字符串,但在比较它们时不会打印“两者相等”的消息。为什么?

public class RoughActivity extends Activity 
{
 private Button checkButton;
 private TextView text;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
        start();
        }

        private void start() {
            int i;
            checkButton=(Button)findViewById(R.id.go);
            text=(TextView)findViewById(R.id.display);
            final String question="sss";
            final char answer[]=new char[question.length()];
            for(i=0;i<question.length();i++)
            {
                answer[i]='s';
            }
            checkButton.setOnClickListener(new View.OnClickListener(){ //on clicking the button,the text must be filled with "both are equal"
                public void onClick(View v){
                    if(question.equals(answer))
                    {
                        text.setText("both are equal");
                    }


                }});
}
}
4

3 回答 3

5

从 char 数组创建一个新字符串并进行比较。

If(question.equals(new String(answer)){
}

或者

If(question.equals(answer.toString()){
}

话虽如此,我无法想象您为什么要尝试将答案存储在 char[] 中。

于 2013-03-15T14:58:40.613 回答
1
public boolean equals (Object object)

此方法将指定对象与此字符串进行比较,如果相等则返回 true。该对象必须是具有相同字符且顺序相同的字符串实例。

因此,首先您需要使用 toString 方法将其转换为 first 为 String 。

例如:

String string = charArray.toString();
于 2013-03-15T15:02:48.463 回答
0

你可以使用循环。

boolean equal = true;
for (int i = 0; i < answer.length; i++) {
      if (!question.charAt(i) == answer[i] {
           equal = false;
           break;
      }
 }

我认为这应该有效。

于 2013-03-15T15:02:54.710 回答