[Andorid/Kotlin] Kotlinを使って簡単な計算機作り。

皆さんこんにちは。
今回は**Kotlin**を使って簡単な計算機を作ったことを書きたいと思います。

**確認してください。！**
今、私の場合は**Android Studio 2.2.3**でテストしました。

# 序論

基本アプリを始めるときHello Worldや計算機をよく作りますよね。
Kotlinを使って計算機を作ってみました。
Kotlinをインストールする方法は下のリンクを参考してください。

[Android/Kotlin こんにちは! Kotlin](http://qiita.com/Dreamwalker/items/3a086e168e5dc801f0cd)

#本論

## View Layout

まず、レイアウトを構成します。
本当に汚いレイアウトなので、優しくみてください。(笑)

写真。
![Screenshot_2017-06-09-18-54-09.png](https://qiita-image-store.s3.amazonaws.com/0/137182/10520367-a0c4-8a0c-ac21-ac170c787ae3.png)

コード。

```xml:activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="com.dreamwalker.kotlin_calculator.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello Kotlin Calculator"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:id="@+id/textView" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Input Numbers"
        android:ems="10"
        android:inputType="number"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Input Numbers"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/editText"
        android:ems="10"
        android:inputType="number" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/editText2"
        android:text="Result"
        android:textSize="20sp"/>

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/textView2"
        android:text="Result"
        android:textSize="30sp"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/textView3"
        android:layout_marginTop="41dp"
        android:text="+" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/button"
        android:layout_toEndOf="@+id/button"
        android:layout_toRightOf="@+id/button"
        android:text="-" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/button2"
        android:layout_toEndOf="@+id/button2"
        android:layout_toRightOf="@+id/button2"
        android:text="x" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/button3"
        android:layout_toEndOf="@+id/button3"
        android:layout_toRightOf="@+id/button3"
        android:text="/" />

</RelativeLayout>

```

## Kotlin Code

数をEditTextから読むことは別のファンクション(関数)を作って使いました。

```kotlin:MainActivity.kt

fun getNumber() : Int{
  val inputNumber = findViewById(R.id.editText) as EditText
  return Integer.parseInt(inputNumber.text.toString())
}

fun getNumberTwo() : Int{
  val inputNumberTwo = findViewById(R.id.editText2) as EditText
  return Integer.parseInt(inputNumberTwo.text.toString())
}

```

inflate課程はしたのようにします。

```kotlin:MainActivity.kt

val result = findViewById(R.id.textView3) as TextView
val btnAdd = findViewById(R.id.button) as Button
val btnMinus = findViewById(R.id.button2) as Button
val btnMul = findViewById(R.id.button3) as Button
val btnDiv = findViewById(R.id.button4) as Button

```

OnClickListener
最初にやる時、沢山の時間がかかった部分でした。**でも、とても簡単です。**

```kotlin:MainActivity.kt

        btnAdd.setOnClickListener {
            result.text = (getNumber() + getNumberTwo()).toString()
        }
        btnMinus.setOnClickListener {
            result.text = "0"
            result.text = (getNumber() - getNumberTwo()).toString()
        }
        btnMul.setOnClickListener {
            result.text = "0"
            result.text = (getNumber() * getNumberTwo()).toString()
        }
        btnDiv.setOnClickListener {
            result.text = "0"
            result.text = (getNumber() / getNumberTwo()).toString()
        }

```

全体コード

```kotlin:MainActivity.kt
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.Button
import android.widget.EditText
import android.widget.TextView


class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val result = findViewById(R.id.textView3) as TextView
        val btnAdd = findViewById(R.id.button) as Button
        val btnMinus = findViewById(R.id.button2) as Button
        val btnMul = findViewById(R.id.button3) as Button
        val btnDiv = findViewById(R.id.button4) as Button

        btnAdd.setOnClickListener {
            result.text = (getNumber() + getNumberTwo()).toString()
        }
        btnMinus.setOnClickListener {
            result.text = "0"
            result.text = (getNumber() - getNumberTwo()).toString()
        }
        btnMul.setOnClickListener {
            result.text = "0"
            result.text = (getNumber() * getNumberTwo()).toString()
        }
        btnDiv.setOnClickListener {
            result.text = "0"
            result.text = (getNumber() / getNumberTwo()).toString()
        }
    }

    fun getNumber() : Int{
        val inputNumber = findViewById(R.id.editText) as EditText
        return Integer.parseInt(inputNumber.text.toString())
    }

    fun getNumberTwo() : Int{
        val inputNumberTwo = findViewById(R.id.editText2) as EditText
        return Integer.parseInt(inputNumberTwo.text.toString())
    }
}

```

#結論

簡単な計算機を作ってみました。起動は問題なしで、ちゃんとできました。
でも、今回は例外処理はしてなかったので、これを見ている皆様は例外処理を追加して挑戦してみてください。

![Screenshot_2017-06-09-18-42-33.png](https://qiita-image-store.s3.amazonaws.com/0/137182/8b456201-1717-c467-8cca-051340f89091.png)



読みいただきありがとうございました。
次のPostで会いましょう！

**Dreamwalker**