Android 计算器崩溃

Android 计算器崩溃,android,Android,我正在尝试创建一个用于计算考试笔记的应用程序 当我按Calculate时,没有任何小数,它会显示一个答案,但如果有小数,它会崩溃 public class MainActivity extends AppCompatActivity { TextView Result; EditText Number1 , Number2, Number3, Number4, Number5, Number6; Button Calculate; float result_n

我正在尝试创建一个用于计算考试笔记的应用程序 当我按Calculate时,没有任何小数,它会显示一个答案,但如果有小数,它会崩溃

public class MainActivity extends AppCompatActivity {

    TextView Result;
    EditText Number1 , Number2, Number3, Number4, Number5, Number6;
    Button Calculate;

    float result_num;
    int num1,num2,num3,num4,num5,num6;

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

        Result = (TextView)findViewById(R.id.Result);

        Number1 = (EditText)findViewById(R.id.Number1);
        Number2 = (EditText)findViewById(R.id.Number2);
        Number3 = (EditText)findViewById(R.id.Number3);
        Number4 = (EditText)findViewById(R.id.Number4);
        Number5 = (EditText)findViewById(R.id.Number5);
        Number6 = (EditText)findViewById(R.id.Number6);

        Calculate = (Button)findViewById(R.id.Calculate);

        Calculate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                num1 = Integer.parseInt(Number1.getText().toString());
                num2 = Integer.parseInt(Number2.getText().toString());
                num3 = Integer.parseInt(Number3.getText().toString());
                num4 = Integer.parseInt(Number4.getText().toString());
                num5 = Integer.parseInt(Number5.getText().toString());
                num6 = Integer.parseInt(Number6.getText().toString());

                result_num = ((((num1 + num2 + num3 + num4) / 4) * 20) / 100) + ((((num5 + num6) / 2) * 80) / 100);
                Result.setText(String.valueOf(result_num));

            }
        });
    }
}

使用浮点而不是整数。Integer无法对带有小数点的数字进行分析和运算

添加:以下是错误检查代码:

try {
  num1 = Double.parseDouble(Number1.getText().toString());
  num2 = Double.parseDouble(Number2.getText().toString());
  ...
}
catch (NumberFormatException ex) {
  Toast.makeText(this, "Error: " + ex.getMessage(), Toast.LENGTH_LONG).show();
}

基本上,您正在尝试将Double或Float值解析为整数类型,代码如下:

Integer.parseInt(Number1.getText().toString());
您的代码无法处理十进制值。但您可以将其更改为双值,如下所示:

double value1 = Double.parseDouble(Number1.getText().toString());

共享xml文件并崩溃。共享xml文件…不,仍然崩溃。当我按下Calculate时,它会显示一个黑屏,然后它会在主屏幕上重定向我。你可以查看日志中的确切错误吗?打开Android Studio bootom上的Logcat选项卡,然后运行你的应用程序?我只是尝试创建示例代码,效果很好。你用圆点吗。作为十进制分隔符?不要使用逗号,-这将崩溃。好的,为了不使应用程序崩溃,您应该捕获解析器错误:try{num1=Double.parseDoubleNumber1.getText.toString;num2=Double.parseDoubleNumber2.getText.toString;…}catch NumberFormatException ex{Toast.maketexthis,Error:+ex.getMessage,Toast.LENGTH\u LONGLONG.show;}由于注释中的格式问题,我在答案中添加了代码。我没有使用逗号,我想我的android studio是derp