【随笔】做个像谷歌一样实时显示计算结果的安卓计算器

在上一篇里讨论了计算器里表达式的解析求值
这一篇来说一下软件交互方面的,如图计算器的结果框会实时显示计算结果
【随笔】做个像谷歌一样实时显示计算结果的安卓计算器_第1张图片
图中“表达式错误”“不能除以零”我是采用在解析时抛出自定异常,然后将异常内容直接显示在结果框中。

throw new Exception("表达式错误");
|
|
try {
    ....
} catch (Exception e) {
    result.setText(e.getMessage());
}

下面要处理一个问题,当表达式输入不完整时盖怎么处理?这里要分两种情况,一是结尾为+ - x /这类双目运算符,二是( ) 这类运算符,
若是遇到双目运算符,则将最后的运算符去除,再计算完整表达式

if (!(isNum(c) || c == ')' || c == '√')){
	str = str.substring(0, str.length() - 1);
}

第二种情况则是表达式错误,但还没按等于号,不能干扰用户输入,我们让输入直接经过之前的算法,会报出异常,但是在输入的地方忽视异常即可

public void onViewClicked(View view){
	...
	try{
		...
		result.setText(Count());
	}
	catch (Exception e){
	}
}

然后可以在输入符号的时候把结果框清空,这样就不会有错误结果输出了

private void SymbolHandle(char data){
	...
	result.setText("");
}

最后还需要在按等于号的时候把结果返回到输入框

inputing.setText(Count());
result.setText("");

你可能感兴趣的:(【随笔】做个像谷歌一样实时显示计算结果的安卓计算器)