Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示输入到EditText中的值与常量之和_Java_Android - Fatal编程技术网

Java 显示输入到EditText中的值与常量之和

Java 显示输入到EditText中的值与常量之和,java,android,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=(EditTex

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

}

你有一根绳子。一个字符串+另一个字符串=字符串。 例如hello+you=helloyou

因此,将字符串解析为整数并开始计算。

将其更改为

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

  ed1.setText(ed.getText().toString()+2);
试试这个


ed1.setTextInteger.parseInted.getText.toString+2

您正在尝试将两个字符串合并,因此输出是组合的。在执行任何算术运算时,将字符串解析为整数,然后将它们相加

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

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

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

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,它会引发异常,因此您应该小心。您可能需要在EditText的xml上设置属性android:inputType=numberSigned。这将强制用户在EditText中只插入整数。 像这样:

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

没有理由的否决票是无用的。