2016-11-10 13 views
0

私は電卓を作成しましたが、私はすべてのiphone/android電卓のようにTextViewに数字を表示することはできません。ユーザーがクリックしたテキストビューに数字を表示する方法は?

たとえば、ユーザーが5 + 5をクリックした場合、5 + 5をテキストビューに表示し、等しくなると10を表示します。これを理解するためにさまざまな方法を試しましたが、エラーが発生します。

ClearBtn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     TextView output = (TextView) findViewById(R.id.text_view); 
     output.setText(""); 
    } 
}); 

Button0.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "0"); 
    } 
}); 

Button1.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "1"); 
    } 
}); 

Button2.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "2"); 
    } 
}); 

Button3.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "3"); 
    } 
}); 

Button4.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "4"); 
    } 
}); 

Button5.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "5"); 
    } 
}); 

Button6.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "6"); 
    } 
}); 

Button7.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "7"); 
    } 
}); 

Button8.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "8"); 
    } 
}); 

Button9.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textView.setText(textView.getText() + "9"); 
    } 
}); 

// Operation Buttons 
addBtn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     if(textView == null) { 
      textView.setText(" "); 

     } else { 
      firstValue = Double.parseDouble(textView.getText() + " "); 
      addition = true; 
      textView.setText(null); 
     } 
    } 
}); 

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

     firstValue = Double.parseDouble(textView.getText() + " "); 
     subtract = true; 
     textView.setText(null); 
    } 
}); 

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

     firstValue = Double.parseDouble(textView.getText() + " "); 
     divison = true; 
     textView.setText(null); 
    } 
}); 

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

     firstValue = Double.parseDouble(textView.getText() + " "); 
     multiplication = true; 
     textView.setText(null); 
    } 
}); 

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

     secondValue = Double.parseDouble(textView.getText() + " "); 

     if(addition == true) { 
      textView.setText(firstValue + secondValue + " "); 
      addition = false; 
     } 

     if(subtract == true) { 
      textView.setText(firstValue - secondValue + " "); 
      subtract = false; 
     } 

     if(divison == true) { 
      textView.setText(firstValue/secondValue + " "); 
      divison = false; 
     } 

     if(multiplication == true) { 
      textView.setText(firstValue * secondValue + " "); 
      multiplication = false; 
     } 
    } 
}); 
+0

最初に 'textView.getText()。toString()'を設定します –

+0

あなたのエラーは何ですか? – Nivedh

+0

エラーは次のようになります:5 - 5 "java.lang.NumberFormatException:無効な倍精度:" - 5 "imは二重ではないことを示す減算記号のために仮定します – Sean

答えて

0

あなたは試してみてください、あなたはその数があるかもしれない数、に文字列を変換しよう たときにスローされる可能性があります例外があり、それは

firstValue = Double.parseDouble(textView.getText().toString().replaceAll(" ","")); 
1

はNumberFormatExceptionが動作するかどうかを確認することができます int、float、またはその他のJava数値型。

あなたはNumberFormatDoubleを使用することができます。

Double result = new Double(textView.getText().toString()); 
NumberFormat nm = NumberFormat.getNumberInstance(); 
textview.setText(nm.format(result)+ "3"); 

希望します。

関連する問題