2017-11-27 11 views
0

Android Studio를 처음 사용하고 있으며 현재 작업중인 계산기 앱이 있습니다. 지금 제로로 나눌 때 자연스럽게 "무한대"라는 오류 메시지가 나타납니다. 그러나 "0으로 나눌 수 없습니다"라고 말하면서 변경하고 싶다면 어떻게해야할까요? 0으로 나누면 Android 계산기 오류 메시지가 표시됩니다.

import android.os.Bundle; 
    import android.support.design.widget.FloatingActionButton; 
    import android.support.design.widget.Snackbar; 
    import android.support.v7.app.AppCompatActivity; 
    import android.support.v7.widget.Toolbar; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.TextView; 

    public class Divisionpage extends AppCompatActivity implements View.OnClickListener { 
     private Button btnDiv; 
     private TextView AnswDiv; 
     private EditText Divt1, Divt2; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_divisionssida); 
      init(); 
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(toolbar); 

      FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
      fab.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
          .setAction("Action", null).show(); 
       } 
      }); 
     } 

     private void init() { 
      btnDiv = (Button)findViewById(R.id.btnDiv); 
      AnswDiv = (TextView)findViewById(R.id.AnswDiv); 
      Divt1 = (EditText)findViewById(R.id.Divtal1); 
      Divt2 = (EditText)findViewById(R.id.Divtal2); 
      btnDiv.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      String num7 = Divt1.getText().toString(); 
      String num8 = Divt2.getText().toString(); 
      switch (v.getId()){ 
       case R.id.btnDiv: 
        try { 
         float division = Float.parseFloat(num7)/Float.parseFloat(num8); 
         AnswDiv.setText(String.valueOf(division)); 
        }catch (Exception e) { 
         AnswDiv.setText("Could not divide!"); 
        } 
        break; 
      } 
     } 
    } 

enter image description here

나는 당신이 볼 수있는 오류 메시지를 표시하기 위해 예외를 잡기 시도했지만 실패했습니다. 너는 무엇을 제안 하는가?

답변

0

음, 실제로 num8 값을 확인하고 0으로 올바른 메시지를 설정할 수 있습니다.

@Override 
    public void onClick(View v) { 
     String num7 = Divt1.getText().toString(); 
     String num8 = Divt2.getText().toString(); 
     switch (v.getId()){ 
      case R.id.btnDiv: 
       try { 
        final float denominator = Float.parseFloat(num8); 
        if(denominator == 0){ 
         AnswDiv.setText("Can't divide by zero"); 
         return; 
        } 
        float division = Float.parseFloat(num7)/Float.parseFloat(num8); 
        AnswDiv.setText(String.valueOf(division)); 
       }catch (Exception e) { 
        AnswDiv.setText("Could not divide!"); 
       } 
       break; 
     } 
    } 

당신은 더 예를 들어, 예외 처리를 개선 사용자 경험을 향상시킬 수 : 를 숫자가 아닌 문자를 도입 할 수는 EditText MIME 사용자를 제한하지 않는 한. 해당 문자를 구문 분석하려고하면 NumberFormatException이 throw되어 예외 조항에서 catch되어 메시지를 설정합니다. 잘못된 것은 아니지만 숫자 문자 만 유효하다는 것을 사용자에게 알려줌으로써 개선 될 수 있습니다.

catch (NumberFormatException ex){ 
    AnswDiv.setText("Only numbers allowed!"); 
} 
+0

감사합니다. 나는 단지 특정 오류 메시지가 표시되지 않으면 catch 코드 예외가 무엇인지 물어보고 싶습니다 ("나눌 수 없습니다!")? 미안해. 바보 같은 질문이라도 배웠다. – Rengaw

+0

catch (NumberFormatException ex) { AnswDiv.setText ("숫자 만 허용!"); }는 사용자가 텍스트 상자에 글자를 입력하는 경우입니다. Exception 절은 쓸모가 없습니다. (물론 AnswDiv가 null이 아닌 한) –

+0

또한 답이 문제를 해결하면 받아 들일 수 있습니까? :) –