我是Java Android开发的初学者。我正在使用Eclipse SDK 3.6.1版本。我正在尝试做一个简单的计算器。我有一个问题如何输入小数? 有我的代码:
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnNum0Id:
case R.id.btnNum1Id:
case R.id.btnNum2Id:
case R.id.btnNum3Id:
case R.id.btnNum4Id:
case R.id.btnNum5Id:
case R.id.btnNum6Id:
case R.id.btnNum7Id:
case R.id.btnNum8Id:
case R.id.btnNum9Id:
String inDigit = ((Button)view).getText().toString();
if (inStr.equals("0")) {
inStr = inDigit;
} else {
inStr += inDigit;
}
tekstas.setText(inStr);
if (Operator == '=') {
rezult = 0;
Operator = ' ';
}
break;
case R.id.btnAddId:
aritmetika();
Operator = '+';
break;
case R.id.btnSubId:
aritmetika();
Operator = '-';
break;
case R.id.btnMulId:
aritmetika();
Operator = '*';
break;
case R.id.btnDivId:
aritmetika();
Operator = '/';
break;
case R.id.btnSqrtId:
aritmetika();
Operator = 'a';
break;
case R.id.btnEqualId:
aritmetika();
Operator = '=';
break;
case R.id.dot:
aritmetika();
Operator = '.';
break;
case R.id.btnClearId:
rezult = 0;
inStr = "0";
Operator = ' ';
tekstas.setText("0");
break;
}
}
private void aritmetika() {
int inNum = Integer.parseInt(inStr);
if (Operator == ' ') {
rezult = inNum;
} else if (Operator == '+') {
rezult += inNum;
} else if (Operator == '-') {
rezult -= inNum;
} else if (Operator == '*') {
rezult *= inNum;
} else if (Operator == '/') {
rezult /= inNum;
} else if (Operator == 'a') {
rezult = (float)Math.sqrt(rezult);
} else if (Operator == '.') {
String rezult2 = inStr+'.';
//need fractional number
} else if (Operator == '=') {
// tolesnis veiksmas
}
tekstas.setText(String.valueOf(rezult));
}
}
我正在考虑如何制作一个小数。
答案 0 :(得分:0)
对于小数,您可以使用/
之类的3/4
或1.23
之类的十进制表示法。您是否面临任何具体问题!?
负面投票后更新,以及问题中的更多说明:-P
你可以有一个点(。)按钮,就像你有任何其他按钮一样。将.
作为其文本。
在编辑文本中附加所有内容,点击=
按钮,将编辑文本中的所有内容作为字符串取出,首先将数学符号视为+,-,x,/
作为分隔符,并且将您的值转换为修复后符号,将它们存储在数组中然后计算。
答案 1 :(得分:0)
您可以将点处理与数字处理放在一起,而不是作为单独的运算符(将点视为数字的一部分)。如果你使用double作为rezult的类型,你可以使用数字和点在整个字符串上执行parseDouble而不是parseInt。
这种设计非常有限。您应该尝试创建一个简单的标记生成器和解析器来创建一个解析操作树。这将是一次更有价值的体验。