2

私は次のコードを持っています:

public void click(View v)
{
    Button b = (Button) v;
    TextView viewEditText = (TextView) findViewById(R.id.functionTextView);
    String editText = viewEditText.getText().toString();

    if (b.getId() == R.id.backspace)
    {
        if (viewEditText.length() > 0)
        {
            if (editText.substring(editText.length() - 1, editText.length()) == ".")
            {
                periodTrue = false;
            }
            viewEditText.setText(viewEditText.getText().toString().substring(0, viewEditText.length() - 1));
        }
    }
}

このコードでは、前の条件が真である場合、バックスペースされる文字がピリオドであるかどうかを確認します。変数periodTrueをfalseに設定します。これは、別の期間を追加できることをアプリに通知します。

backspace変数が設定されているifステートメント内にキーが含まれないことを除いて、すべてが通常どおりキーで機能します。エラーは発生せず、確認しました

viewEditText.append(editText.subString(editText.length()-1, editText.length());返された文字が「。」であることを確認します。

なぜ機能しないのかわかりません。コンパイル時でも実行時でも、エラーや警告はスローされません。だから私はあなたのところに来て、私が明らかに間違っていることを別の視点で示すことができるかどうかを確認しました。

4

1 に答える 1

2
if (editText.substring(editText.length() - 1, editText.length()) == ".")

2つの参照を比較しているため、これは機能しませんString。これは異なります。(この質問のより詳細な説明:Javaで文字列を比較するにはどうすればよいですか?

代わりに以下を使用してください。

if (".".equals(editText.substring(editText.length() - 1, editText.length())))
于 2012-11-05T03:48:06.230 に答える