0

string"sss"と character arrayがあり{'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メソッドを使用して最初に文字列に変換する必要があります。

例:

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 に答える