
1.xml에서 화면 만들기
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp"
>
<EditText
android:id="@+id/Edit1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="숫자1" />
<EditText
android:id="@+id/Edit2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="숫자2"/>
<Button
android:id="@+id/BtnAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="더하기"
/>
<Button
android:id="@+id/BtnSub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="빼기"/>
<Button
android:id="@+id/BtnMul"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="곱하기"/>
<Button
android:id="@+id/BtuDiv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="나누기"/>
<Button
android:id="@+id/Btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="나머지값"/>
<TextView
android:id="@+id/TextResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textColor="#00ff00"
android:textSize="30dp"
/>
</LinearLayout>
1단게 : 코틀린 객체생성
위치는 onCreate 메소드 밖에만들어도 안에만들어도됨 단,밖에 만들시 lateinit로 초기화는 나중에하겠다고 알려줘야함
package com.example.ex04_01
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
//1.멤버변수
//lateinit 초기화 나중에 하겠다
lateinit var edit1: EditText
lateinit var edit2: EditText
lateinit var btnAdd: Button
lateinit var btnSub: Button
lateinit var btnMul: Button
lateinit var btnDiv: Button
lateinit var btn1: Button
lateinit var textResult: TextView
lateinit var num1: String
lateinit var num2: String
var result: Double? = null
//3.메소드
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//지역변수 ->onCreate메소드의 지역변수
//1단계 - 코틀린 객체 만들기
//var edit1 : EditText
2단계 : xml객체를 코틀린 객체에 연결(바인딩)
//2단계 - xml객체를 코틀린 객체에 연결(바인딩)
edit1 = findViewById<EditText>(R.id.Edit1)
edit2 = findViewById<EditText>(R.id.Edit2)
btnAdd = findViewById(R.id.BtnAdd)
btnSub = findViewById(R.id.BtnSub)
btnMul = findViewById(R.id.BtnMul)
btnDiv = findViewById(R.id.BtuDiv)
btn1 = findViewById(R.id.Btn1)
textResult = findViewById(R.id.TextResult)
3단계 작업 ->이벤트 처리
//(edit)text -> String으로 변경 -> Int로 변경해서 계산 -> 계산후 String형으로 변경 후 출력해줌
//text는 String으로만 형변환 가능
btnAdd.setOnClickListener {
num1 = edit1.text.toString()
num2 = edit2.text.toString()
if (num1.trim().equals("") || num2.trim().equals("")){
Toast.makeText(this, "숫자입력 하세요", Toast.LENGTH_SHORT).show()
}else {
result = num1.toDouble() + num2.toDouble()
textResult.text = "계산 결과 : " + result
//.toString()사용안해도됨 why?? String+Int = String이되기 때문에
}
}
btnSub.setOnClickListener {
num1 = edit1.text.toString()
num2 = edit2.text.toString()
if (num1.trim().equals("") || num2.trim().equals("")){
Toast.makeText(applicationContext, "숫자입력 하세요", Toast.LENGTH_SHORT).show()
}else {
result = num1.toDouble() - num2.toDouble()
textResult.text = "계산 결과 : " + result.toString()
}
}
btnMul.setOnClickListener {
num1 = edit1.text.toString()
num2 = edit2.text.toString()
if (num1.trim().equals("") || num2.trim().equals("")){
Toast.makeText(applicationContext, "숫자입력 하세요", Toast.LENGTH_SHORT).show()
}
else {
result = num1.toDouble() * num2.toDouble()
textResult.text = "계산 결과 : " + result.toString()
}
false
}
btnDiv.setOnClickListener {
num1 = edit1.text.toString()
num2 = edit2.text.toString()
if(num1.trim().equals("") || num2.trim().equals("")){
Toast.makeText(applicationContext, "숫자입력 하세요", Toast.LENGTH_SHORT).show()
}
else {
//num값은 String 인데 계속 Int 0 이랑 비교해서 안된거였음
if (num2=="0") {
Toast.makeText(applicationContext, "0입력", Toast.LENGTH_SHORT).show()
}
else {
result = num1.toDouble() / num2.toDouble()
//나누기 할때 소수점 두번째자리 까지만 표시
//ex) 123.45687913...일때 (123.456789..*100) 하면 12345.6132456..
//(12345.6132456..).toInt()하면 소수점 없이 12345 만 출력됨
//(12345)/100.0해주면 123.45
//멤버변수에 result null 을 넣어서 !!를 사용하여 null이아닐때 사용하겠다고 해야함
result =(result!! *100).toInt()/100.0
textResult.text = "계산 결과 : " + result.toString()
}
}
}
btn1.setOnClickListener {
num1 = edit1.text.toString()
num2 = edit2.text.toString()
if (num1.trim().equals("") || num2.trim().equals("")){
Toast.makeText(applicationContext, "숫자입력 하세요", Toast.LENGTH_SHORT).show()
}else {
result = num1.toDouble() % num2.toDouble()
textResult.text = "계산 결과 : " + result.toString()
}
false
}
}
}