TOP
본문 바로가기
📚 목차
[Java]/Java Android

[Android] 계산기 만들기

by 기록자_Recordian 2025. 4. 28.
728x90
반응형
이전 내용
 

[Android] 회원정보 출력 기능 만들기

이전 내용 [Android] 난수 생성기 만들기이전 내용 [Android] 안드로이드 위젯(widget)이전 내용 [Android] Android Studio 다운 받기자바 안드로이드란? 자바(Java)는 안드로이드 애플리케이션 개발에 가장 널

puppy-foot-it.tistory.com


계산기 만들기

 

Q. 사칙연산 기능이 구현된 계산기 만들기

▶ 숫자 두 개를 각각 EditText로 받고, 사칙연산은 각각 버튼으로 만들고, 결과는 EditText로 출력

 

[activity_main.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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Number1" />

    <EditText
        android:id="@+id/editTextNumber1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="숫자 입력"
        android:inputType="numberDecimal"
        android:layout_marginTop="16dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Number2" />

    <EditText
        android:id="@+id/editTextNumber2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="숫자 입력"
        android:inputType="numberDecimal"
        android:layout_marginTop="16dp" />

    <LinearLayout
        android:id="@+id/labeled"
        android:orientation="horizontal"
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/buttonSum"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:text="+"
            android:onClick="onSumButtonClick" />

        <Button
            android:id="@+id/buttonSub"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:text="-"
            android:onClick="onSubButtonClick" />

        <Button
            android:id="@+id/buttonMul"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:text="*"
            android:onClick="onMulButtonClick" />

        <Button
            android:id="@+id/buttonDiv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:text="/"
            android:onClick="onDivButtonClick" />
    </LinearLayout>

    <TextView
        android:id="@+id/textViewResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="result"
        android:textSize="18sp"
        android:layout_marginTop="16dp" />


</LinearLayout>

 

◆ 버튼을 감싼 LinearLayout

  • LinearLayout: 이 컨테이너는 자식 뷰를 수평 또는 수직으로 정렬하는 레이아웃.
  • android:id: @+id/labeled는 이 LinearLayout의 고유 식별자로, 코드에서 해당 레이아웃을 참조할 때 사용.
  • android:orientation: horizontal로 설정되어 있어, 자식 뷰들이 수평으로 배치.
  • android:padding: 10dp로 설정된 내부 여백은 LinearLayout 내부의 모든 방향에 대해 10dp의 여백을 설정.
  • android:layout_width: match_parent로 설정되어 있어, 이 LinearLayout이 부모 뷰의 너비에 맞춰 늘어나도록 한다.
  • android:layout_height: wrap_content로 설정되어 있어, 내부 컨텐츠의 높이에 맞춰 늘어나도록 한다

◆ 각 버튼의 android:onClick:

각 버튼마다 버튼 클릭 시 호출될 메소드 이름을 지정한다. 이 메소드들은 MainActivity.java에서 구현되어야 한다.


[MainActivity.java]

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private EditText editTextNumber1;
    private EditText editTextNumber2;

    private Button buttonSum;
    private Button buttonSub;
    private Button buttonMul;
    private Button buttonDiv;
    private TextView textViewResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editTextNumber1 = findViewById(R.id.editTextNumber1);
        editTextNumber2 = findViewById(R.id.editTextNumber2);
        buttonSum = findViewById(R.id.buttonSum);
        buttonSub = findViewById(R.id.buttonSub);
        buttonMul = findViewById(R.id.buttonMul);
        buttonDiv = findViewById(R.id.buttonDiv);
        textViewResult = findViewById(R.id.textViewResult);

        // 버튼 클릭 리스너 설정
        buttonSum.setOnClickListener(this::onSumButtonClick);
        buttonSub.setOnClickListener(this::onSubButtonClick);
        buttonMul.setOnClickListener(this::onMulButtonClick);
        buttonDiv.setOnClickListener(this::onDivButtonClick);
    }

    public void onSumButtonClick(View view) {
        int number1 = Integer.parseInt(editTextNumber1.getText().toString());
        int number2 = Integer.parseInt(editTextNumber2.getText().toString());

        int result = number1 + number2;
        displayResult(result);
    }

    public void onSubButtonClick(View view) {
        int number1 = Integer.parseInt(editTextNumber1.getText().toString());
        int number2 = Integer.parseInt(editTextNumber2.getText().toString());

        int result = number1 - number2;
        displayResult(result);
    }

    public void onMulButtonClick(View view) {
        int number1 = Integer.parseInt(editTextNumber1.getText().toString());
        int number2 = Integer.parseInt(editTextNumber2.getText().toString());

        int result = number1 * number2;
        displayResult(result);
    }

    public void onDivButtonClick(View view) {
        int number1 = Integer.parseInt(editTextNumber1.getText().toString());
        int number2 = Integer.parseInt(editTextNumber2.getText().toString());

        int result = number1 / number2;
        displayResult(result);
    }

    // 결과 출력 함수
    private void displayResult(int result) {
        textViewResult.setText(String.valueOf(result));
    }
}

 

◆ 변수선언

  • editTextNumber1: 첫 번째 숫자를 입력받기 위한 EditText 객체.
  • editTextNumber2: 두 번째 숫자를 입력받기 위한 EditText 객체.
  • buttonSum: 덧셈 버튼을 참조하는 Button 객체.
  • buttonSub: 뺄셈 버튼을 참조하는 Button 객체.
  • buttonMul: 곱셈 버튼을 참조하는 Button 객체.
  • buttonDiv: 나눗셈 버튼을 참조하는 Button 객체.
  • textViewResult: 연산 결과를 표시하기 위한 TextView 객체.

◆ onCreate()

  • 각 UI 요소를 findViewById() 메서드를 통해 초기화하여 화면에서 클릭 가능한 상태로 만든다.
  • setOnClickListener(): 각 버튼에 대해 클릭 리스너를 설정하여 사용자가 버튼을 클릭할 때 호출될 메서드를 지정

◆ 버튼 클릭 메소드들(4개)

사용자가 입력한 첫 번째 숫자와 두 번째 숫자를 getText() 메서드로 가져와 문자열로 변환하고, **Integer.parseInt()**를 통해 정수로 변환한다.

두 숫자를 각 메소드에 맞게 계산(더하기, 빼기, 곱하기, 나누기)하고, displayResult(result) 메서드를 호출하여 결과 표시.

 

◆ 결과 출력 함수

  • displayResult(int result): 결과를 받아서 textViewResult에 결과를 문자열로 변환하여 설정

[결과물]


다음 내용

 

[Android] 위젯 - 이미지뷰(Image View)

이전 내용 [Android] 계산기 만들기이전 내용 [Android] 회원정보 출력 기능 만들기이전 내용 [Android] 난수 생성기 만들기이전 내용 [Android] 안드로이드 위젯(widget)이전 내용 [Android] Android Studio 다운 받

puppy-foot-it.tistory.com

728x90
반응형