XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/et1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:inputType="numberDecimal" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et2"
android:layout_margin="10dp"
android:inputType="numberDecimal" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnAdd"
android:text="더하기"
android:layout_margin="10dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnSub"
android:text="빼기"
android:layout_margin="10dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnMul"
android:text="곱하기"
android:layout_margin="10dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnDiv"
android:text="나누기"
android:layout_margin="10dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnMod"
android:text="나머지 몫"
android:layout_margin="10dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/result"
android:textSize="30sp"
android:textColor="#FF0000"
android:layout_margin="10dp"
android:text="계산 결과 : " />
</LinearLayout>
Main Class
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText et1, et2;
Button btnAdd, btnSub, btnMul, btnDiv, btnMod;
TextView textResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1 = findViewById(R.id.et1);
et2 = findViewById(R.id.et2);
btnAdd = findViewById(R.id.btnAdd);
btnSub = findViewById(R.id.btnSub);
btnMul = findViewById(R.id.btnMul);
btnDiv = findViewById(R.id.btnDiv);
btnMod = findViewById(R.id.btnMod);
textResult = findViewById(R.id.result);
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if(et1.getText().toString().length() == 0) {
Toast.makeText(MainActivity.this, "첫번째 숫자 입력 필수!", Toast.LENGTH_SHORT).show();
et1.requestFocus();
return;
} else if(et2.length() == 0) {
Toast.makeText(MainActivity.this, "두번째 숫자 입력 필수!", Toast.LENGTH_SHORT).show();
et2.requestFocus();
return;
}
double num1 = Double.parseDouble(et1.getText().toString());
double num2 = Double.parseDouble(et2.getText().toString());
double result = 0;
switch(v.getId()) {
case R.id.btnAdd:
result = num1 + num2;
break;
case R.id.btnSub:
result = num1 - num2;
break;
case R.id.btnMul:
result = num1 * num2;
break;
case R.id.btnDiv:
if(num2 == 0) {
Toast.makeText(MainActivity.this, "두 번째 숫자에 0이 올 수 없습니다!", Toast.LENGTH_SHORT).show();
et2.requestFocus();
return;
}
result = num1 / num2;
break;
case R.id.btnMod:
if(num2 == 0) {
Toast.makeText(MainActivity.this, "두 번째 숫자에 0이 올 수 없습니다!", Toast.LENGTH_SHORT).show();
et2.requestFocus();
return;
}
result = num1 % num2;
break;
}
// 소수점 첫째 자리가 0일 경우
if(result % 1 == 0) {
textResult.setText("계산 결과 : " + (int)result);
} else {
textResult.setText("계산 결과 : " + result);
}
}
};
btnAdd.setOnClickListener(listener);
btnSub.setOnClickListener(listener);
btnMul.setOnClickListener(listener);
btnDiv.setOnClickListener(listener);
btnMod.setOnClickListener(listener);
}
}
만약 Main Class의 id 구분을 if문으로 할 경우 아래의 코드처럼 작성합니다.
if(v == btnAdd) {
result = num1 + num2;
} else if(v == btnSub) {
result = num1 - num2;
} else if(v == btnMul) {
result = num1 * num2;
} else if(v == btnDiv) {
if(num2 == 0) {
Toast.makeText(MainActivity.this, "두 번째 숫자에 0이 올 수 없습니다!", Toast.LENGTH_SHORT).show();
edit2.requestFocus();
return;
}
result = num1 / num2;
} else if(v == btnMod) {
if(num2 == 0) {
Toast.makeText(MainActivity.this, "두 번째 숫자에 0이 올 수 없습니다!", Toast.LENGTH_SHORT).show();
edit2.requestFocus();
return;
}
result = num1 % num2;
}
일반적으로 if-else문보다 switch-case문이 연산 속도가 빠릅니다.
'BackEnd > Android' 카테고리의 다른 글
for문의 초기변수를 내부에서 사용하는 방법 (0) | 2020.06.16 |
---|---|
레이아웃 (0) | 2020.06.12 |
속성 - margin, padding, visibility (0) | 2020.06.07 |
위젯 - TextView, EditText (0) | 2020.06.07 |
안드로이드 크기 단위 (dp, sp, pt, px, mm, in) (0) | 2020.06.07 |