2017-11-27 6 views
0

Androidスタジオが新しく、私が作業している電卓アプリがあります。今私はゼロで割るとき、自然に私はエラーメッセージ "無限大"を得るが、もし私がそれを "ゼロで割り切れなかった"と言うように変更したいのであれば、どうやって行くのだろうか?0で割るとAndroid計算ツールのエラーメッセージが表示される

enter image description here

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

私はあなたが見ることができるようにエラーメッセージを表示するには、例外をキャッチしようとしたが、それに失敗しました。あなたは何を提案しますか?

答えて

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がスローされます。これは誤っていない間に、数字文字のみが有効であることをユーザに知らせるように改善することができる。

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

ありがとう、これはトリックでした。私はちょうどその特定のエラーメッセージが表示されない場合、あなたのコードでキャッチ例外のポイントは何かを尋ねたい( "分割できませんでした!")?申し訳ありませんが、それは愚かな質問ですが、私は学んでいます。 – Rengaw

+0

catch(NumberFormatException ex){ AnswDiv.setText( "数値のみ許可!"); }は、ユーザーがテキストボックスに文字を入力した場合です。 Exception句は無用です(もちろん、AnswDivがnullでない限り) –

+0

また、その答えが問題を解決した場合は、それを受け入れることをお勧めしますか? :) –

関連する問題