如何比较if语句中的字符串

时间:2017-05-17 03:12:30

标签: java android

我正在尝试制作一个比较字符串的程序

button = (Button) findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        InputMethodManager imm=(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);

        if(inpt==null)op.setText("Please Enter");
        else  if (inpt.equals("a")) op.setText("a entered");
        else if (inpt.equals("b")) op.setText("b entered");

        else op.setText("unknown keyword");

但是else语句总是被执行。请帮我纠正这段代码

我是初学者,但还不太了解.......

1 个答案:

答案 0 :(得分:0)

因为这个inpt字符串被声明为 final 。意味着值无法更改,并且 string inpt必须在每次执行 onClick 操作时更新。否则它将采用相同的值并获得其他部分。所以我删除了final关键字并在onClick函数中声明了字符串。试试这个。

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final EditText ip=(EditText)findViewById(R.id.ip);

    final TextView op=(TextView)findViewById(R.id.op);
    //final String inpt=ip.getText().toString();


    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            String inpt=ip.getText().toString();
                InputMethodManager imm=(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
                imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);

                if(inpt==null)op.setText("Please Enter");
                else  if (inpt.equals("a")) op.setText("a entered");
                else if (inpt.equals("b")) op.setText("b entered");

                else op.setText("Unknown keyword");

            }
        });
    }