728x90
간단한 계산기 만드는 예제.
계산 결과는 소수점까지 표기, 0으로 나누는 것 에러 처리
MainActivity.kt
package com.example.myapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "테이블 레이아웃 계산기"
btn0.setOnClickListener {
if (Edit1.isFocused()) {
val num = Edit1.getText().toString()
if (!num.equals("0")) {
Edit1.setText(num + "0")
}
} else if (Edit2.isFocused()) {
val num = Edit2.getText().toString()
if (!num.equals("0")) {
Edit2.setText(num + "0")
}
}
}
btn1.setOnClickListener {
if (Edit1.isFocused()) {
val num = Edit1.getText().toString()
if (!num.equals("0")) {
Edit1.setText(num + "1")
} else{
Edit1.setText("1")
}
} else if (Edit2.isFocused()) {
val num = Edit2.getText().toString()
if (!num.equals("0")) {
Edit2.setText(num + "1")
} else {
Edit2.setText("1")
}
}
}
btn2.setOnClickListener {
if (Edit1.isFocused()) {
val num = Edit1.getText().toString()
if (!num.equals("0")) {
Edit1.setText(num + "2")
} else {
Edit1.setText("2")
}
} else if (Edit2.isFocused()) {
val num = Edit2.getText().toString()
if (!num.equals("0")) {
Edit2.setText(num + "2")
} else {
Edit2.setText("2")
}
}
}
...
btn9.setOnClickListener {
if (Edit1.isFocused()) {
val num = Edit1.getText().toString()
if (!num.equals("0")) {
Edit1.setText(num + "9")
} else {
Edit1.setText("9")
}
} else if (Edit2.isFocused()) {
val num = Edit2.getText().toString()
if (!num.equals("0")) {
Edit2.setText(num + "9")
} else {
Edit2.setText("9")
}
}
}
btnAdd.setOnClickListener {
val num1 = Edit1.getText().toString()
val num2 = Edit2.getText().toString()
if (num1.trim().equals("") || num2.trim().equals("")) {
textView.setText("입력창이 비었습니다.")
} else {
val result = num1.toDouble() + num2.toDouble();
textView.setText("계산 결과 : " + result.toString());
}
}
btnSub.setOnClickListener {
val num1 = Edit1.getText().toString()
val num2 = Edit2.getText().toString()
if (num1.trim().equals("") || num2.trim().equals("")) {
textView.setText("입력창이 비었습니다.")
} else {
val result = num1.toDouble() - num2.toDouble();
textView.setText("계산 결과 : " + result.toString());
}
}
btnMul.setOnClickListener {
val num1 = Edit1.getText().toString()
val num2 = Edit2.getText().toString()
if (num1.trim().equals("") || num2.trim().equals("")) {
textView.setText("입력창이 비었습니다.")
} else {
val result = num1.toDouble()*num2.toDouble();
textView.setText("계산 결과 : " + result.toString());
}
}
btnDiv.setOnClickListener {
val num1 = Edit1.getText().toString()
val num2 = Edit2.getText().toString()
if (num1.trim().equals("") || num2.trim().equals("")) {
textView.setText("입력창이 비었습니다.")
} else if(num1.equals("0") || num2.equals("0")) {
textView.setText("0으로 나눌 수 없습니다.")
}else{
val result = num1.toDouble()/num2.toDouble();
textView.setText("계산 결과 : " + result.toString());
}
}
}
}
avtivity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:layout_editor_absoluteX="-68dp"
tools:layout_editor_absoluteY="33dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="125dp"
android:orientation="vertical">
<EditText
android:id="@+id/Edit1"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_span="5"
android:text=""
android:textSize="15dp"
/>
<EditText
android:id="@+id/Edit2"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_span="5"
android:text=""
android:textSize="15dp" />
</LinearLayout>
<TableLayout
android:layout_width="414dp"
android:layout_height="127dp">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp">
<Button
android:id="@+id/btn0"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="0" />
...
<Button
android:id="@+id/btn4"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="4" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp">
<Button
android:id="@+id/btn5"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="5" />
...
<Button
android:id="@+id/btn9"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="9" />
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btnAdd"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="더하기"
android:textSize="25dp"
android:layout_margin="3dp"/>
<Button
android:id="@+id/btnSub"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="빼기"
android:textSize="25dp"
android:layout_margin="3dp"/>
<Button
android:id="@+id/btnMul"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="곱하기"
android:textSize="25dp"
android:layout_margin="3dp"/>
<Button
android:id="@+id/btnDiv"
android:layout_width="match_parent"
android:layout_height="60dp"
android:text="나누기"
android:textSize="25dp"
android:layout_margin="3dp"/>
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="계산결과 : "
android:textColor="#FF0000"
android:textSize="30dp"/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
실행 결과
728x90
'WEB > Kotlin' 카테고리의 다른 글
kotin (1) (0) | 2021.10.18 |
---|---|
[안드로이드 스튜디오 / XML] 레이아웃 구성 익히기(2) (0) | 2021.10.18 |