Котлин обучение с нуля: приложение Калькулятор

Котлин обучение с нуля продолжается. Сегодня мы напишем простое Android-приложение «Калькулятор». Это отличный практический проект, который поможет новичку понять, как работает весь процесс создания приложения на Kotlin.

Что мы создадим

Простой калькулятор с четырьмя действиями: сложение, вычитание, умножение и деление. Пользователь вводит два числа и нажимает кнопку операции. Результат сразу отображается на экране.


Шаг 1: Создание нового проекта

1. Откройте Android Studio.
2. Нажмите New Project.
3. Выберите Empty Activity.
4. В поле Language обязательно выберите Kotlin.
5. Назовите проект Calculator.
6. Minimum SDK оставьте API 24.
7. Нажмите Finish.


Шаг 2: Подготовка интерфейса (activity_main.xml)

Откройте файл res → layout → activity_main.xml и замените всё содержимое на следующий код:

<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="16dp">

    <EditText
        android:id="@+id/etNumber1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Первое число"
        android:inputType="numberDecimal" />

    <EditText
        android:id="@+id/etNumber2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Второе число"
        android:inputType="numberDecimal" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center">

    <Button
        android:id="@+id/btnPlus"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="+" />

    <Button
        android:id="@+id/btnMinus"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="-" />

    <Button
        android:id="@+id/btnMultiply"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="×" />

    <Button
        android:id="@+id/btnDivide"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="÷" />
</LinearLayout>

    <TextView
        android:id="@+id/tvResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:text="Результат: "
        android:gravity="center"
        android:layout_marginTop="32dp"/>
</LinearLayout>


Шаг 3: Основной код приложения (MainActivity.kt)

Откройте файл MainActivity.kt и полностью замените его содержимое на этот код:

class MainActivity : AppCompatActivity() {

    private lateinit var etNumber1: EditText
    private lateinit var etNumber2: EditText
    private lateinit var tvResult: TextView

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

        etNumber1 = findViewById(R.id.etNumber1)
        etNumber2 = findViewById(R.id.etNumber2)
        tvResult = findViewById(R.id.tvResult)

        findViewById<Button>(R.id.btnPlus).setOnClickListener { calculate('+') }
        findViewById<Button>(R.id.btnMinus).setOnClickListener { calculate('-') }
        findViewById<Button>(R.id.btnMultiply).setOnClickListener { calculate('*') }
        findViewById<Button>(R.id.btnDivide).setOnClickListener { calculate('/') }
    }

    private fun calculate(operation: Char) {
        val num1Text = etNumber1.text.toString()
        val num2Text = etNumber2.text.toString()

        if (num1Text.isEmpty() || num2Text.isEmpty()) {
            tvResult.text = "Введите оба числа"
            return
        }

        val num1 = num1Text.toDouble()
        val num2 = num2Text.toDouble()
        var result = 0.0

        when (operation) {
            '+' -> result = num1 + num2
            '-' -> result = num1 - num2
            '*' -> result = num1 * num2
            '/' -> {
                if (num2 == 0.0) {
                    tvResult.text = "Деление на ноль невозможно"
                    return
                }
                result = num1 / num2
            }
        }

        tvResult.text = "Результат: $result"
    }
}


Шаг 4: Что мы сделали в коде (объяснение для новичка)

  • lateinit var — мы объявили переменные, которые инициализируем позже
  • findViewById — находим элементы интерфейса по их id
  • setOnClickListener — назначаем действие при нажатии на кнопку
  • when — удобная замена большому if-else
  • Проверка на пустые поля и деление на ноль — базовая защита от ошибок


Шаг 5: Запуск приложения

Подключите телефон или запустите эмулятор. Нажмите зелёную кнопку Run. Введите два числа и нажмите любую операцию. Калькулятор должен работать.


Что дальше в котлин обучение с нуля

После этого калькулятора рекомендуем улучшить приложение:

  • Добавить кнопку очистки полей
  • Сделать историю вычислений
  • Добавить поддержку клавиатуры
  • Улучшить дизайн

Написав этот калькулятор, вы уже сделали важный шаг в котлин обучение с нуля. Вы научились создавать интерфейс, обрабатывать нажатия кнопок, работать с числами и защищать приложение от ошибок.

Продолжайте практику — каждое новое приложение будет даваться легче.