[Android] 간단한 계산기 만들기
덧셈만 가능한 간단한 계산기를 만들어보자.
< 소스코드 >
package kr.ac.cnu.computer.cp2_05;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
String prevstr = "";
int intresult = 0;
int pluscount = 0;
boolean pluscheck = false;
String tempstr = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button1); // 숫자 버튼 눌렀을때
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "1"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "1"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "1";
}
}
});
Button button2 = (Button) findViewById(R.id.button2); // 숫자 버튼 눌렀을때
button2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "2"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "2"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "2";
}
}
});
Button button3 = (Button) findViewById(R.id.button3); // 숫자 버튼 눌렀을때
button3.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "3"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "3"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "3";
}
}
});
Button button4 = (Button) findViewById(R.id.button4); // 숫자 버튼 눌렀을때
button4.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "4"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "4"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "4";
}
}
});
Button button5 = (Button) findViewById(R.id.button5); // 숫자 버튼 눌렀을때
button5.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "5"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "5"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "5";
}
}
});
Button button6 = (Button) findViewById(R.id.button6); // 숫자 버튼 눌렀을때
button6.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "6"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "6"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "6";
}
}
});
Button button7 = (Button) findViewById(R.id.button7); // 숫자 버튼 눌렀을때
button7.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "7"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "7"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "7";
}
}
});
Button button8 = (Button) findViewById(R.id.button8); // 숫자 버튼 눌렀을때
button8.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "8"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "8"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "8";
}
}
});
Button button9 = (Button) findViewById(R.id.button9); // 숫자 버튼 눌렀을때
button9.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "9"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "9"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "9";
}
}
});
Button button0 = (Button) findViewById(R.id.button0); // 숫자 버튼 눌렀을때
button0.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가 0일때는?
prevstr = prevstr + "0"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가 0이 아닐때는?
prevstr = prevstr + "0"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "0";
}
}
});
Button buttonplus = (Button) findViewById(R.id.buttonplus); // + 버튼 눌렀을때
buttonplus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(pluscheck==true){
return;
}else{
pluscheck = true;
pluscount++;
if(pluscount==1){ //플러스카운트가1 일때 즉, 처음 오는 플러스 일 때
prevstr = prevstr + "+"; // 프리뷰 갱신
TextView preview = (TextView) findViewById(R.id.preview); //프리뷰 표시
preview.setText(prevstr); // 프리뷰 표시
} else{ // 플러스카운트가 1이아닐때 즉 2번째 이상의 플러스 일 때
prevstr = prevstr + "+";//프리뷰갱신
TextView preview1234 = (TextView) findViewById(R.id.preview);//프리뷰표시
preview1234.setText(prevstr);//프리뷰표시
intresult = intresult + Integer.parseInt(tempstr);
tempstr = "";
TextView result121212 = (TextView) findViewById(R.id.result);
result121212.setText(Integer.toString(intresult));
}
}
}
});
Button buttonequal = (Button) findViewById(R.id.buttonequal); // = 버튼 눌렀을때
buttonequal.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false;
intresult = intresult + Integer.parseInt(tempstr);
tempstr = "";
TextView result = (TextView) findViewById(R.id.result);
result.setText(Integer.toString(intresult));
TextView preview1 = (TextView) findViewById(R.id.preview);
preview1.setText("");
}
});
Button buttonclear = (Button) findViewById(R.id.buttonclear); // clear 버튼 눌렀을때
buttonclear.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false;
tempstr = "";
prevstr = "";
intresult = 0;
pluscount = 0;
TextView preview10 = (TextView) findViewById(R.id.preview);
preview10.setText("");
TextView result123 = (TextView)findViewById(R.id.result);
result123.setText("0");
}
});
}}
<xml 소스코드>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:text="0"
android:layout_width="364dp"
android:layout_height="70dp" android:id="@+id/result"
android:textSize="48sp" android:gravity="right"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toTopOf="@+id/buttonclear"
android:layout_marginLeft="24dp" android:layout_marginStart="24dp" android:layout_marginRight="24dp"
android:layout_marginEnd="24dp" android:layout_marginBottom="20dp"/>
<TextView
android:layout_width="364dp"
android:layout_height="60dp" android:id="@+id/preview"
android:textSize="36sp" android:gravity="right"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="24dp"
android:layout_marginStart="24dp" android:layout_marginRight="24dp" android:layout_marginEnd="24dp"
app:layout_constraintBottom_toTopOf="@+id/result" android:layout_marginBottom="5dp"/>
<Button
android:text="8"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button8"
android:layout_marginLeft="32dp" android:layout_marginStart="32dp"
app:layout_constraintStart_toEndOf="@+id/button0" app:layout_constraintEnd_toStartOf="@+id/buttonequal"
android:layout_marginEnd="32dp" android:layout_marginRight="32dp"
app:layout_constraintHorizontal_bias="0.0" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/button5" android:textSize="30sp"/>
<Button
android:text="7"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button7"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="20dp"
android:layout_marginStart="20dp" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/button4" android:textSize="30sp"/>
<Button
android:text="9"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button9"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="24dp"
android:layout_marginEnd="24dp" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/button6" android:textSize="30sp"/>
<Button
android:text="5"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button5"
android:layout_marginLeft="32dp" android:layout_marginStart="32dp"
app:layout_constraintStart_toEndOf="@+id/button0" app:layout_constraintEnd_toStartOf="@+id/buttonequal"
android:layout_marginEnd="32dp" android:layout_marginRight="32dp"
app:layout_constraintHorizontal_bias="0.0" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/button2" android:textSize="30sp"/>
<Button
android:text="4"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button4"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="20dp"
android:layout_marginStart="20dp" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/button1" android:textSize="30sp"/>
<Button
android:text="6"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button6"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="24dp"
android:layout_marginEnd="24dp" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/button3" android:textSize="30sp"/>
<Button
android:text="2"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button2"
android:layout_marginLeft="32dp" android:layout_marginStart="32dp"
app:layout_constraintStart_toEndOf="@+id/button0" app:layout_constraintEnd_toStartOf="@+id/buttonequal"
android:layout_marginEnd="32dp" android:layout_marginRight="32dp"
app:layout_constraintHorizontal_bias="0.0" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/buttonplus" android:textSize="30sp"/>
<Button
android:text="1"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button1"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="24dp"
android:layout_marginStart="24dp" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/button0" android:textSize="30sp"/>
<Button
android:text="3"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button3"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="24dp"
android:layout_marginEnd="24dp" android:layout_marginBottom="15dp"
app:layout_constraintBottom_toTopOf="@+id/buttonequal" android:textSize="30sp"/>
<Button
android:text="0"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/button0"
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="24dp"
android:layout_marginStart="24dp" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="40dp" android:textSize="30sp"/>
<Button
android:text="+"
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/buttonplus"
android:layout_marginLeft="32dp" android:layout_marginStart="32dp"
app:layout_constraintStart_toEndOf="@+id/button0" app:layout_constraintEnd_toStartOf="@+id/buttonequal"
android:layout_marginEnd="32dp" android:layout_marginRight="32dp"
app:layout_constraintHorizontal_bias="0.475" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="40dp" android:textSize="30sp"/>
<Button
android:text="="
android:layout_width="100dp"
android:layout_height="60dp" android:id="@+id/buttonequal"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="24dp"
android:layout_marginEnd="24dp" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="40dp" android:textSize="30sp"/>
<Button
android:text="CLEAR"
android:layout_width="364dp"
android:layout_height="70dp" android:id="@+id/buttonclear"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@+id/button8" android:layout_marginBottom="15dp"
android:layout_marginLeft="24dp" android:layout_marginStart="24dp" android:layout_marginRight="24dp"
android:layout_marginEnd="24dp" android:textSize="30sp"/>
<TextView
android:layout_width="364dp"
android:layout_height="50dp" android:id="@+id/textView2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="1dp" android:layout_marginLeft="24dp"
android:layout_marginStart="24dp" android:layout_marginRight="24dp" android:layout_marginEnd="24dp"
android:textSize="30sp" android:gravity="center"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<설명>
constraint 레이아웃으로 화면을 구성하고, 레이아웃을 구성하고있는 버튼들에 대해 자바 코드로 이벤트를 처리해 덧셈이 가능한 계산기 앱을 만들었다.
레이아웃 부분은 오류가 나지 않도록 제약조건을 잘 지정해 주고, 정렬을 할 때는 gravity를 사용했으며 버튼에 일정한 간격을 주기 위해 직접 수치를 입력했다. 뷰 들의 id를 자바 코드로 접근하기 편하게 직접 지정해줬다. 계산 결과를 나타내는 TextView는 초기값을 0으로 지정해 줬다.
자바 코드로 이벤트를 처리하는 부분에서는 어려운 점이 많았다.
먼저 숫자 버튼 코드를 살펴보면
Button button1 = (Button) findViewById(R.id.button1); // 숫자 버튼 눌렀을때
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false; // 플러스를 연속으로 사용하는거 방지
if(pluscount==0){ // 플러스카운트가0일때는?
prevstr = prevstr + "1"; // 프리뷰 갱신
intresult = Integer.parseInt(prevstr); // 결과 갱신
TextView preview = (TextView) findViewById(R.id.preview); // 프리뷰 표시하기
preview.setText((CharSequence) prevstr);
}else{ // 플러스카운트가0이 아닐때는?
prevstr = prevstr + "1"; // 프리뷰갱신
TextView preview12312 = (TextView) findViewById(R.id.preview);
preview12312.setText(prevstr);
tempstr = tempstr + "1";
}
}
});
위와 같이 나왔는데, 하나하나 살펴보자.
먼저 버튼이 눌리는걸 감지하는 OnClickListener() 메서드를 선언하고, 메서드의 매개변수 부분에 리스너를 오버라이드를 통해 구현했다.
계산기를 실행하는 중 + 버튼이 연속으로 눌리는 경우를 방지해야 한다.
이를 위해 boolean 타입의 checkplus변수를 도입해 +버튼을 누를 때 true로 하고, +버튼 이외의 버튼을 눌렀을 때는 false로 설정해 +버튼이 연속으로 눌리는 걸 방지했다.
또 숫자버튼을 누를 때는 지금까지 +버튼이 나온 적이 있는지, 아니면 처음 나오는지에 따라 다르게 처리해 줘야 한다.
+버튼이 나온적이 없으면 수식 부분(프리뷰라고 칭하겠다)을 갱신하고 표현해주고 결과를 갱신하면 되지만 +버튼이 나온적이 있는 경우에는 프리뷰를 갱신하고 표현한 다음 임시로 만든 값에다가 버튼에 맞는 수를 집어넣는다. (String의 Concatenation을 이용했다.)
이 경우에 결과를 갱신하지 않는다.
위의 코드는 숫자 1 버튼의 코드지만, 나머지 숫자들에 대해서도 같은 방식으로 처리해주면 된다.
+버튼 코드를 살펴보자.
Button buttonplus = (Button) findViewById(R.id.buttonplus); // + 버튼 눌렀을때
buttonplus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(pluscheck==true){
return;
}else{
pluscheck = true;
pluscount++;
if(pluscount==1){ //플러스카운트가1 일때 즉, 처음 오는 플러스 일 때
prevstr = prevstr + "+"; // 프리뷰 갱신
TextView preview = (TextView) findViewById(R.id.preview); //프리뷰 표시
preview.setText(prevstr); // 프리뷰 표시
} else{ // 플러스카운트가1이아닐때 즉2번째 이상의 플러스 일 때
prevstr = prevstr + "+";//프리뷰갱신
TextView preview1234 = (TextView) findViewById(R.id.preview);//프리뷰표시
preview1234.setText(prevstr);//프리뷰표시
intresult = intresult + Integer.parseInt(tempstr);
tempstr = "";
TextView result121212 = (TextView) findViewById(R.id.result);
result121212.setText(Integer.toString(intresult));
}
}
}
});
+버튼을 눌렀을 때는 연속으로 눌리는걸 방지하기 위해 pluscheck가 false일 경우에만 이벤트를 처리하도록 코드를 작성했다.
pluscheck가 false 라면 pluscount가 1인지, 1이 아닌지 즉 +가 처음 나오는건지 이미 한 번 이상 나온 적이 있는지에 따라 다르게 처리했다.
+가 처음 나오는 경우라면, 프리뷰를 갱신하고 표시하는거로 마무리되지만, +가 한 번 이상 나온 경우라면 프리뷰를 갱신하고 표시하는 것 까지는 같지만 이 다음에 숫자 버튼에서 만들어진 임시로 만든 값을 이용해 그 값을 결과에 더한 값으로 결과를 갱신한다. (임시로 만든 값은 String이기 때문에 형변환을 거쳐서 결과를 갱신한다.) 이 경우에는 결과를 표시해 줘야 하기 때문에 결과를 표시해주는 코드도 작성했다.
= 버튼과 clear버튼은 어떻게 동작하는지 알아보자.
Button buttonequal = (Button) findViewById(R.id.buttonequal); // = 버튼 눌렀을때
buttonequal.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false;
intresult = intresult + Integer.parseInt(tempstr);
tempstr = "";
TextView result = (TextView) findViewById(R.id.result);
result.setText(Integer.toString(intresult));
TextView preview1 = (TextView) findViewById(R.id.preview);
preview1.setText("");
}
});
Button buttonclear = (Button) findViewById(R.id.buttonclear); // clear 버튼 눌렀을때
buttonclear.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
pluscheck = false;
tempstr = "";
prevstr = "";
intresult = 0;
pluscount = 0;
TextView preview10 = (TextView) findViewById(R.id.preview);
preview10.setText("");
TextView result123 = (TextView)findViewById(R.id.result);
result123.setText("0");
}
});
두 버튼은 나머지 버튼에 비해서 간단하게 처리할 수 있었다.
먼저 = 버튼을 살펴보면, 결과를 갱신하는 동작을 먼저 수행한다.
이 때 역시 숫자 버튼에서 도입한 임시로 지정한 값을 결과에 더해 결과를 새로 갱신하고 결과를 표시한다.
=버튼을 누를 때는 프리뷰를 표현할 필요가 없고, 프리뷰의 내용을 지워야 하기 때문에 프리뷰의 text속성을 공백으로 바꿔줬다.
clear버튼을 누를 때는 모든 값을 초기값으로 설정해 주면 된다.
정수 범위를 넘어서는 연산은 구현하지 않았다. (BigInteger 사용하면 가능할듯)
= 버튼을 누른 이후에 다시 계산을 하지 않는다고 가정하고 만들었다.
'Mobile > Android' 카테고리의 다른 글
[Android] 여러 화면 간 전환 (0) | 2021.10.25 |
---|---|
[Android] 대화상자 사용하기 (0) | 2021.10.18 |
[Android] 이벤트 처리 (0) | 2021.10.18 |
[Android] 텍스트뷰 (0) | 2021.10.12 |
[Android] Java 코드와 XML 레이아웃 (0) | 2021.10.11 |
댓글
이 글 공유하기
다른 글
-
[Android] 여러 화면 간 전환
[Android] 여러 화면 간 전환
2021.10.25 -
[Android] 대화상자 사용하기
[Android] 대화상자 사용하기
2021.10.18 -
[Android] 이벤트 처리
[Android] 이벤트 처리
2021.10.18 -
[Android] 텍스트뷰
[Android] 텍스트뷰
2021.10.12