I’ve been working on an Android calculator for the past several days. I’ve reached the equals button, which is the last part of my code. But it is saying theOperator is not initialized for some reason at my if statement. Any help?
[code]
package rechee.cool;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
public EditText display;
double counter1=0;
double counter2=0;
String display1= display.getText().toString();
String sub = "-";
String divide = "/";
String mult = "*";
//Just have two buttons so far, I'm going to have like 10 more
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Associate the button variable with the xml reference
display= (EditText) findViewById(R.id.editText1);}
//When button is clicked, display the text. How do I do this for the rest of my variables?
public void onClick(View v) {
switch(v.getId()){
case R.id.bOne:
display.append("1");
break;
case R.id.bTwo:
display.append("2");
break;
case R.id.bThree:
display.append("3");
break;
case R.id.bFour:
display.append("4");
break;
case R.id.bFive:
display.append("5");
break;
case R.id.bSix:
display.append("6");
break;
case R.id.bSeven:
display.append("7");
break;
case R.id.bEight:
display.append("8");
break;
case R.id.bNine:
display.append("9");
break;
case R.id.bZero:
display.append("0");
break;
case R.id.bPoint:
display.append(".");
break;
case R.id.bClear:
display.setText("");
break;
case R.id.bAdd:
double displayValue= Double.parseDouble(display1);
counter1+= displayValue;
display.setText("");
String theOperator= new String("+");
break;
case R.id.bEqual:
//display.setText(Double.toString(counter2));
//counter1 = 0;
// Tried using a switch for theOperator, but 1.6 doesn't allow string switch. So I'm going to use if else statements instead.
if(theOperator=="+"){
}
}
//case "+":
//break;
}
}
[/code]
This is because you define
theOperatorinside the scope ofcase R.id.bAddonly, andcase R.id.bEqualblock cannot see it. You can solve the problem by defining the variabletheOperatoroutside the entire switch block or as a field to the whole class.