오늘은 진짜 계산기가 구동할 수 있도록 JAVA 코딩을 해줄 거예요!
오늘도 힘차게 시작해봅시다~
for 문을 이용하여 버튼들을 선언해주었습니다. (CE, +/-, ., ← 버튼은 다음에 해보도록 해요!)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textInput = findViewById(R.id.textInput);
textOutput = findViewById(R.id.textOutput);
for(int i=0; i<18; i++) {
String buttonID = "button" + i;
int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
findViewById(resID).setOnClickListener(mClickListener);
}
}
태그를 활용하여 짧고 간단하게 선언해주었어요.
이제 mClickListener 함수를 작성해 볼 건데요,
Button.OnClickListener mClickListener = new View.OnClickListener() {
public void onClick(View view) {
Button button = (Button) view;
String input = button.getText().toString();
textOutput.setText("");
if("+".equals(input)||"-".equals(input)||"*".equals(input)||"/".equals(input)||"=".equals(input)){
if("".equals(firstValue)){
firstValue = textInput.getText().toString();
textInput.setText("");
} else{
String secondValue = textInput.getText().toString();
result=0;
switch (operator) {
case "+" : result = Integer.valueOf(firstValue) + Integer.valueOf(secondValue); break;
case "-" : result = Integer.valueOf(firstValue) - Integer.valueOf(secondValue); break;
case "*" : result = Integer.valueOf(firstValue) * Integer.valueOf(secondValue); break;
case "/" : result = Integer.valueOf(firstValue) / Integer.valueOf(secondValue); break;
}
if("=".equals(input)){
textInput.setText("");
textOutput.setText(String.valueOf(result));
firstValue = "";
operator = "";
return;
}
textInput.setText(String.valueOf(result));
firstValue = String.valueOf(result);
init = true;
}
operator = input;
} else if("C".equals(input)){
textInput.setText("");
textOutput.setText("");
firstValue = "";
operator = "";
} else {
if(init){
init = false;
textInput.setText(input);
} else {
textInput.setText(textInput.getText().toString() + input);
}
}
}
};
계산기의 사칙연산기능과 C를 누르면 초기화되는 기능을 구현해주었어요.
input은 가장 최근에 입력된 값을 나타내고, operator는 가장 최근에 입력된 연산기호 값을 저장하고 있어요. 계산을 할 때 2항 계산을 하면 간단하게 끝나지만, 3항 이상 계산을 할 때를 위해, init를 이용하여 함수를 구현해주었어요.
textInput.setText(textInput.getText().toString() + input);
숫자가 입력됩니다
textInput.setText(textInput.getText().toString() + input);
숫자가 입력됩니다
textInput.setText(input);
textInput에는 input이 출력됩니다textInput.setText(textInput.getText().toString() + input);
기존 적혀있던 숫자 뒤로 숫자가 입력됩니다내일은 고구마 계산기 다운 기능을 만들어주도록 하겠습니다!
위 코드는 아래 블로그를 참고하여 만들어졌습니다!