我正在做计算器应用程序。即使我不使用double,结果也会显示double。例)1+1=2.0
但我想要1+1=2
当然,我想保留double,当有double时,比如1.2+1.3=2.5
我应该如何编辑?
我试着这样编辑,但有一个错误。
public void equalsOnClick(View view)
{
Integer result = null;
ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino");
try {
result = (int)engine.eval(workings);
} catch (ScriptException e)
{
Toast.makeText(this, "Invalid Input", Toast.LENGTH_SHORT).show();
}
if(result != null)
resultsTV.setText(String.valueOf(result.intValue()));
}
主要活动
public class MainActivity extends AppCompatActivity {
TextView workingsTV;
TextView resultsTV;
String workings = "";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initTextView();
}
private void initTextView()
{
workingsTV = (TextView)findViewById(R.id.workingsTextView);
resultsTV = (TextView)findViewById(R.id.resultTextView);
}
private void setWorkings(String givenValue)
{
workings = workings + givenValue;
workingsTV.setText(workings);
}
public void equalsOnClick(View view)
{
Double result = null;
ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino");
try {
result = (double)engine.eval(workings);
} catch (ScriptException e)
{
Toast.makeText(this, "Invalid Input", Toast.LENGTH_SHORT).show();
}
if(result != null)
resultsTV.setText(String.valueOf(result.doubleValue()));
}
public void clearOnClick(View view)
{
workingsTV.setText("");
workings = "";
resultsTV.setText("");
leftBracket = true;
}
}
2条答案
按热度按时间fhity93d1#
因为你已经宣布
result
类型,Double
. 因此,在你施展之前doubleValue()
变成一个int
并将其设置为resultsTV
,其double
值将在那里设置。更改方法定义如下:
注意,我也搬走了
resultsTV.setText
内部try-catch
块,以便仅当result = (Double)engine.eval(workings)
不会引发异常。1tu0hz3e2#
使用模运算符检查double是整数(结果%1==0)还是math.floor,然后检查结果是否更改。
如果是,则可以使用integer.valueof(result)
顺便说一下,integer有一个内置的tostring方法。