이전 내용
[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
'[Java] > Java Android' 카테고리의 다른 글
[Android] 레이아웃 - 1: 레이아웃 종류 (0) | 2025.04.29 |
---|---|
[Android] 위젯 - 이미지뷰(Image View) (0) | 2025.04.29 |
[Android] 회원정보 출력 기능 만들기 (1) | 2025.04.28 |
[Android] 난수 생성기 만들기 (0) | 2025.04.28 |
[Android] 안드로이드 위젯(widget) (0) | 2025.04.28 |