显示输入EditText的值加上常量的总和

时间:2013-10-10 07:49:48

标签: java android

例如(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;
}

}

5 个答案:

答案 0 :(得分:2)

你有一个字符串。一个String +另一个String = StringString。 E.g"你好" +"你" =" helloyou&#34 ;;

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

答案 1 :(得分:2)

您正在尝试连接两个字符串,因此将输出组合在一起。在执行任何arithmetic operation时,将字符串解析为整数,然后添加它们。

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

答案 2 :(得分:0)

将其更改为

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

而不是

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

答案 3 :(得分:0)

试试这个

(的Integer.parseInt(ed.getText()的toString())+ 2)

ed1.setText;

答案 4 :(得分: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上设置属性EditText。这将强制用户仅在EditText中插入int号 像这样:

<EditText 
    android:id="@+id/editText1"
    android:inputType="numberSigned" 
    ... />