平均计算器致命异常

时间:2017-09-21 07:19:03

标签: android loops average handler logcat

我是编程新手。我试图运行一个简单的平均计算器并关闭一个力,这就是logcat显示的内容。我正在运行android studio版本2.3.3

FATAL EXCEPTION: main
Process: com.vu.gradingapp, PID: 6312
java.lang.NumberFormatException: For input string: ""
    at java.lang.Integer.parseInt(Integer.java:620)
    at java.lang.Integer.valueOf(Integer.java:794)
    at com.vu.gradingapp.AverageActivity$1.onClick(AverageActivity.java:37)
    at android.view.View.performClick(View.java:6219)
    at android.view.View$PerformClick.run(View.java:24482)
    at android.os.Handler.handleCallback(Handler.java:769)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6540)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

我使用的代码如下

public class AverageActivity extends AppCompatActivity {
EditText editmanner, editinstances, editshortstance, editstrikes, editboxingskills, editknocks, editkicks, editResults;
Button btnResults;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.average_page);
    editmanner =(EditText)findViewById(R.id.editText8);
    editinstances =  (EditText)findViewById(R.id.editText9);
    editshortstance = (EditText)findViewById(R.id.editText10);
    editstrikes = (EditText)findViewById(R.id.editText11);
    editboxingskills = (EditText)findViewById(R.id.editText12);
    editknocks = (EditText)findViewById(R.id.editText13);
    editkicks = (EditText)findViewById(R.id.editText14);
    editResults = (EditText)findViewById(R.id.editText15);
    btnResults = (Button) findViewById(R.id.button10);
    btnResults.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
    int first, second, third, fourth, fifth, sixth, seventh, results;
    first=Integer.valueOf(editmanner.getText().toString());
    second=Integer.valueOf(editinstances.getText().toString());
    third=Integer.valueOf(editshortstance.getText().toString());
    fourth=Integer.valueOf(editstrikes.getText().toString());
    fifth=Integer.valueOf(editboxingskills.getText().toString());
    sixth=Integer.valueOf(editknocks.getText().toString());
    seventh=Integer.valueOf(editkicks.getText().toString());
    results=(first+second+third+fourth+fifth+sixth+seventh)/7;
    editResults.setText(String.valueOf(results));
}
    });


}
public void knowtheresults (View view) {
    String button_text;
    button_text = ((Button) view).getText().toString();
    if (button_text.equals("Summary")) {
        Intent intent = new Intent(this, ResultActivity.class);
        startActivity(intent);
    } else if (button_text.equals("Back")) {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);

我做错了什么:D

谢谢大家

4 个答案:

答案 0 :(得分:0)

错误说你无法转换""值为数字java.lang.NumberFormatException。因此,使用0代替数字为空白首先检查edittext是否为空,而不是将其值设置为0

int first;
if(editmanner.getText().toString().equals("")){
first = 0
}else{
first = Integer.valueOf(editmanner.getText().toString());
}

为你的所有int变量执行此操作。

答案 1 :(得分:0)

使用每个int变量的验证更新代码:

if (editmanner().toString().isEmpty())
   first = 0;
else
   first = Integer.parseInt(editmanner().toString());

由于您有int个变量(不是Integer),因此最好使用parseInt代替valueOf

答案 2 :(得分:0)

谢谢大家,我刚用(0)填写短信,现在正在工作。请为我的愚蠢问题道歉。

有没有办法在textview上隐藏这个零,所以它显示空白。

答案 3 :(得分:-1)

  

<强> java.lang.NumberFormatException   抛出以指示应用程序已尝试将字符串转换为其中一种数字类型,但该字符串没有适当的格式。

logcat已经说明了崩溃的原因。您的一个或所有EditText都有空字符串。要将字符串转换为Integer,字符串必须是数字(0,1,2等)。您需要使用数值设置EditText(例如:0)。