본문 바로가기
DEVELOPMENT

[Android Studio] 초간단 계산기 앱 만들기(직접 풀어보기)

by 200% 2021. 5. 6.

기본 개념: https://200percent.tistory.com/entry/Android-Studio-%EA%B8%B0%EB%B3%B8-%EC%9C%84%EC%A0%AF

(책을 요약하는 과정에서 너무 책의 내용을 그대로 가져와버려서 어쩔 수 없이 비공개 처리를 했다...)

 

직접 풀어보기 4-3은 실습 4-1을 개선시키는 거였는데 실습 4-1을 해볼 때 id를 미리 정해준 줄 모르고 혼자 정해버렸다... 그래서 4-3 id랑 변수도 예제에 나온 것들과 다르게 되어버린...

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/num1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:hint="숫자1" />

    <EditText
        android:id="@+id/num2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:hint="숫자2" />

    <Button
        android:id="@+id/plus"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="더하기" />

    <Button
        android:id="@+id/minus"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="빼기" />

    <Button
        android:id="@+id/multiply"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="곱하기" />

    <Button
        android:id="@+id/division"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="나누기" />

    <Button
        android:id="@+id/remain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="나머지값" />

    <TextView
        android:id="@+id/cal_result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#FF0000"
        android:layout_margin="5dp"
        android:textSize="30dp"
        android:text="계산 결과 : " />

</LinearLayout>
public class MainActivity extends AppCompatActivity {
    EditText num1, num2;
    Button plus, minus, multi, divi, rema;
    TextView result;
    String box1, box2;
    Float cal;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("초간단 계산기(수정)");
        num1 = (EditText) findViewById(R.id.num1);
        num2 = (EditText) findViewById(R.id.num2);
        plus =(Button) findViewById(R.id.plus);
        minus =(Button) findViewById(R.id.minus);
        multi =(Button) findViewById(R.id.multiply);
        divi =(Button) findViewById(R.id.division);
        rema = (Button) findViewById(R.id.remain);
        result = (TextView) findViewById(R.id.cal_result);

        plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                box1 = num1.getText().toString();
                box2 = num2.getText().toString();
                if(box1.trim().equals("")||box2.trim().equals("")){
                    Toast.makeText(getApplicationContext(), "값을 입력해주세요", Toast.LENGTH_SHORT).show();
                } else{
                cal = Float.parseFloat(box1) + Float.parseFloat(box2);
                result.setText("계산 결과 : "+cal.toString());}
            }
        });

        minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                box1 = num1.getText().toString();
                box2 = num2.getText().toString();
                if(box1.trim().equals("")||box2.trim().equals("")){
                    Toast.makeText(getApplicationContext(), "값을 입력해주세요", Toast.LENGTH_SHORT).show();
                } else{
                cal = Float.parseFloat(box1) - Float.parseFloat(box2);
                result.setText("계산 결과 : "+cal.toString());}
            }
        });

        multi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                box1 = num1.getText().toString();
                box2 = num2.getText().toString();
                if(box1.trim().equals("")||box2.trim().equals("")){
                    Toast.makeText(getApplicationContext(), "값을 입력해주세요", Toast.LENGTH_SHORT).show();
                } else{
                cal = Float.parseFloat(box1) * Float.parseFloat(box2);
                result.setText("계산 결과 : "+cal.toString());}
            }
        });
        divi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                box1 = num1.getText().toString();
                box2 = num2.getText().toString();
                if(box1.trim().equals("")||box2.trim().equals("")){
                    Toast.makeText(getApplicationContext(), "값을 입력해주세요", Toast.LENGTH_SHORT).show();
                } else if(box2.trim().equals("0")){
                    Toast.makeText(getApplicationContext(), "0으로 나눌 수 없습니다", Toast.LENGTH_SHORT).show();
                }else{
                cal = Float.parseFloat(box1) / Float.parseFloat(box2);
                result.setText("계산 결과 : "+cal.toString());}
            }
        });
        rema.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                box1 = num1.getText().toString();
                box2 = num2.getText().toString();
                if(box1.trim().equals("")||box2.trim().equals("")){
                    Toast.makeText(getApplicationContext(), "값을 입력해주세요", Toast.LENGTH_SHORT).show();
                } else if(box2.trim().equals("0")){
                Toast.makeText(getApplicationContext(), "0으로 나눌 수 없습니다", Toast.LENGTH_SHORT).show();
                }else{
                cal = Float.parseFloat(box1) % Float.parseFloat(box2);
                result.setText("계산 결과 : "+cal.toString());}
            }
        });

    }
}

 

공백 확인 if문을 처음엔

if(box1.equals("")||box2.equals("")){

이렇게 작성했는데 다른 분들께서 작성해서 올리신 걸 보니까 "trim()"이라는게 붙어있어서 차이를 확인해봤더니 저게 공백을 제거해주는 함수여서 띄어쓰기로 둔 경우에도 값을 입력하라는 문구가 뜨도록 해주었다!

 

 

오늘 4단원 끝까지 했어야했는데... 청소하고 할 일 끝내고 시간이 되면 하고 아니면 내일 해야겠다...

내일 원래 자격증 공부만 하려고 했었는데 어쩔 수 없지 뭐...