-3

例如 (1+2 = 3) 但我得到 (1+2=12)。

这是我的代码

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText ed=(EditText)findViewById(R.id.editText1);

    final EditText ed1=(EditText)findViewById(R.id.editText2);

    ed.addTextChangedListener(new TextWatcher(){

        @Override
        public void afterTextChanged(Editable s) {




        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {

            ed1.setText(ed.getText().toString()+2);
        }

    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}
4

5 回答 5

2

你有一个字符串。一个字符串 + 另一个字符串 = 字符串字符串。例如“你好”+“你”=“你好”;

因此,将您的 String 解析为 Integer 并开始计算。

于 2013-10-10T07:53:03.263 回答
2

您正在尝试连接两个字符串,因此输出被合并。在执行 anyarithmetic operation时,将字符串解析为整数,然后添加它们。

   int result=Integer.parseInt(ed.getText().toString())+2);
   ed1.setText(String.valueOf(result);
于 2013-10-10T07:55:02.693 回答
0

将其更改为

  ed1.setText(Integer.parseInt(ed.getText().toString())+2);

代替

  ed1.setText(ed.getText().toString()+2);
于 2013-10-10T07:54:12.663 回答
0

尝试这个

ed1.setText(Integer.parseInt(ed.getText().toString())+2);

于 2013-10-10T07:54:26.013 回答
0

如果在字符串和整数之间使用运算符“+”,则整数将转换为字符串并附加到字符串的末尾。

让我们看一个你现在在做什么的例子:

String a = "1";
int b = 2;

System.out.println(a+b);

控制台输出:12

以及你应该做什么:

int a = 1;
int b = 2;

System.out.println(a+b);

控制台输出:3

解决此问题的最简单方法是像这样更改代码:

public void onTextChanged(CharSequence s, int start, int before, int count) {

    ed1.setText(String.valueOf(Integer.parseInt(ed.getText().toString) + 2));

}

注意:解析未经检查的字符串是非常危险的,如果解析的字符串不是 int,它可能会引发异常,因此您应该小心。您可能希望android:inputType="numberSigned"在 .xml 的 xml 上设置属性EditText。这将强制用户在EditText.
像这样:

<EditText 
    android:id="@+id/editText1"
    android:inputType="numberSigned" 
    ... />
于 2013-10-10T08:39:06.670 回答