我正在尝试创建一个自动的简单计算器 - 没有更多的等号。
以下是它应该如何:
1.用户输入第一个数字
2.用户选择“添加”,“减去”等操作
3.用户输入第二个数字。在这个阶段,程序现在应该自动计算答案。例如:
用户输入“2”作为第一个数字;
用户选择“添加”;
用户输入“3”(此时为第二个数字)
然后它应该在结果框中显示“5”。
如果用户继续输入“2”,这意味着第二个数字现在是“32”而不是“3”,结果将是“34”
这是我的代码:
public String int_firstnumber = "";
public String int_secondnumber = "";
public int int_result = 0;
public int int_numberone = 0;
public int int_numbertwo = 0;
public String str_operation = "";
public String str_inputdisplay = "";
public String str_indicator = "none";
public String str_focus = "first";
// BUTTON 1
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//checks the indicator
if(str_focus=="first") {
int_firstnumber = int_firstnumber +"1";
lblinput.setText(int_firstnumber + str_operation + int_secondnumber);
} else {
if(str_indicator=="add"){
int_secondnumber = int_secondnumber + "1";
lblinput.setText(int_firstnumber + str_operation + int_secondnumber);
int_numberone = Integer.parseInt(int_firstnumber);
int_numbertwo = Integer.parseInt(int_secondnumber);
int_result = int_numberone + int_numbertwo;
lblresult.setText(int_result);
}
}
}
});
//END OF BUTTON 1
//BUTTON ADD
btnadd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
str_indicator = "add";
str_operation = " + ";
str_focus = "second";
lblinput.setText(int_firstnumber + str_operation + int_secondnumber);
}
});
这有点有效但不完全。如果我输入“1”,它会在1
上显示str_inputdisplay
,然后点击+
符号或btnadd
,然后显示1+
在str_inputdisplay
。这意味着我们在第二个数字上对吗?但是,当我再次输入1
时,应用程序才会强行关闭。
任何想法为什么会这样?原谅我的代码方式,我刚刚开始学习Java btw。谢谢!
答案 0 :(得分:1)
为什么要命名你的变量' int_firstnumber'当所有其他变量根据public String int_firstnumber
和int int_result
str_operation
你的代码看起来要复杂得多。正如有人提到的那样,当你的运算符是一个字符串时,你不能添加两个数字,string operator = "+";
它不会被视为操作数,它将被处理为字符串的类型。
为什么不选择"首先"调用方法 setFirstNumber ,这样你可以验证输入并设置第一个数字..这样的事情:
public void setFirstNumber(int firstNumber){
int_numberone = firstNumber;
}
然后当"添加"获取选择调用第二个方法 setSecondNumber 以及添加方法
public void setSecondNumber(int secondNumber){
int_numbertwo = secondNumber;'
}
和
public int addNumbers(int firstNumber, int secondNumber){
return firstNumber + secondNumber;
}
您的结果将为int_result = addNumbers(int_numberOne, int_numberTwo)
通过这种方式,您的代码更加清晰,每个函数都执行一个任务,如果您想在以后添加其他操作,则可以轻松添加函数减法,乘法等
public int subtractNumbers(int firstNumber, int secondNumber){
return firstNumber - secondNumber;
}
public int multiplyNumbers(int firstNumber, int secondNumber){
return firstNumber * secondNumber;
}
希望有所帮助!
答案 1 :(得分:0)
两个问题:
添加两个字符串时,不会添加。当你想进行如下操作时,将它改为int,long等:
int_firstnumber = int_firstnumber +"1";
希望您正确设置变量str_focus和str_indicator,因为这在您提供的代码段中不可用。
答案 2 :(得分:0)
if("first".equals(str_focus)) {
......
int_firstnumber = int_firstnumber +1;
} else {
if("add".equals(str_indicator)){
......
int_secondnumber = int_secondnumber + 1;
答案 3 :(得分:0)
您应该将TextWatcher添加到输入字段。您将获得callbaks中的值,您可以使用它来更新显示答案的视图。