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()) == ".")

当您比较两个s 的引用时,这将不起作用String,这将是不同的。(这个问题更深入的解释:How do I compare strings in Java?

请改用以下内容:

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