我想从editText中获取一个数字并在计算中使用,我的代码中没有任何错误,但我没有得到我想要的东西,r的值是alwayas 1,这里是代码:
public class Counter extends Activity {
Button add, sub;
TextView result;
EditText range;
double r;
public double c=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_counter);
add = (Button) this.findViewById(R.id.add);
sub = (Button) this.findViewById(R.id.sub);
result = (TextView) this.findViewById(R.id.result);
range = (EditText) this.findViewById(R.id.range);
try {
r = new Double(range.getText().toString());
} catch (NumberFormatException e) {
r = 1; // your default value
}
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
c=c+r;
result.setText(""+c);
}
});
sub.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
c=c-r;
result.setText(""+c);
}
});
}
任何帮助??
答案 0 :(得分:3)
try {
r = new Double(range.getText().toString());
} catch (NumberFormatException e) {
r = 1; // your default value
}
您发布的代码片段是正确的。 Double
有一个带String
的构造函数。问题是你在findViewById之后执行它,并且EditText可能不包含任何内容。例如,当您按下add
时,您可以再次检索EditText
的内容并进行解析:
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
r = new Double(range.getText().toString());
} catch (NumberFormatException e) {
r = 1; // your default value
}
c=c+r;
result.setText(""+c);
}
});
答案 1 :(得分:2)
Double类提供了一个静态方法,它将字符串解析为double。
所以试着改变:
r = new Double(range.getText().toString());
要:
r = Double.parseDouble(range.getText().toString());
此外,您可能希望将其他字符串解析为其他类型的数字,例如整数:
int x = Integer.parseInt(yourString);
答案 2 :(得分:0)
试试这个(解析字符串加倍):
r = Double.parseDouble(range.getText()。toString());
当用户点击按钮时,你应该从EditText获取价值,只有在onCreate()中它才会获得价值,它将在创建时从EditText获取数据
答案 3 :(得分:0)
您需要使用Double.parseDouble(range.getText().toString());
答案 4 :(得分:0)
你只需要这样做:
r = Double.parseDouble(range.getText().toString()); // Surround with try/catch for fancy functionality
答案 5 :(得分:0)
使用那样:
r=Double.parseDouble(range.getText().toString());
答案 6 :(得分:0)
您可以在XML文件中创建editText,以便它只接受数字
android:inputType="number"
和你的java代码
r = Double.parseDouble(range.getText().toString());
答案 7 :(得分:0)
试试这个:为了防止EditText中的String无法解析为double,我将它放在try-catch块中。
double r;
try {
r = Double.parseDouble(range.getText().toString());
catch (NumberFormatException ex) {
r = 1;
}
希望这会有所帮助:)