모바일/android

[안드로이드프로그래밍6판] 4장 직접 풀어보기 4-2, 4-3 실습 4-1

hatch 2021. 10. 15. 20:50
728x90
반응형

정답지 아닙니다.

블로그 주인이 생각한 코드라서

오타, 오류 있을 수 있습니다.

(>> 댓글로 알려주시면 정정하겠습니다!)

 

직접 풀어보기 4-2

 

<xml 코드>

<?xml version="1.0" encoding="utf-8"?>
<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="20dp">

    <Button
        android:background="#009E22"
        android:padding="10dp"
        android:text="버튼 1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView
        android:layout_marginTop="30dp"
        android:layout_marginBottom="30dp"
        android:text="이건 텍스트뷰입니다."
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <EditText
        android:background="#0000D3"
        android:layout_marginBottom="50dp"
        android:hint="이건 에디트텍스트입니다."
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:text="버튼 2"
        android:textColor="#5C000000"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"/>

</LinearLayout>

<java 코드>

package com.cookandroid.myself4_2;

import androidx.appcompat.app.AppCompatActivity;

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("직접 풀어보기 4-2");
    }
}

 

 

실습 4-1, 초간단 계산기

 

<xml 코드>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/Edit1"
        android:hint="숫자1"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <EditText
        android:id="@+id/Edit2"
        android:hint="숫자2"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnAdd"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="더하기"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnSub"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="빼기"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnMul"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="곱하기"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnDiv"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="나누기"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/TextResult"
        android:textColor="#FF0000"
        android:layout_margin="10dp"
        android:textSize="30dp"
        android:text="계산 결과 : "
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

<java 코드>

package com.cookandroid.practice4_1;

import androidx.appcompat.app.AppCompatActivity;

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

public class MainActivity extends AppCompatActivity {

    EditText edit1, edit2;
    Button btnAdd, btnSub, btnMul, btnDiv;
    TextView textResult;
    String num1, num2;
    int result;

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

        edit1 = findViewById(R.id.Edit1);
        edit2 = findViewById(R.id.Edit1);
        btnAdd = findViewById(R.id.BtnAdd);
        btnDiv = findViewById(R.id.BtnDiv);
        btnMul = findViewById(R.id.BtnMul);
        btnSub = findViewById(R.id.BtnSub);
        textResult = findViewById(R.id.TextResult);

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1) + Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+result);
            }
        });
        btnSub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1) - Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+result);
            }
        });
        btnMul.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1) * Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+result);
            }
        });
        btnDiv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1) / Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+result);
            }
        });

    }
}

 

 

직접 풀어보기 4-3 (실습 4-1 응용)

 

<xml 코드>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/Edit1"
        android:hint="숫자1"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <EditText
        android:id="@+id/Edit2"
        android:hint="숫자2"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnAdd"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="더하기"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnSub"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="빼기"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnMul"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="곱하기"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnDiv"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="나누기"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/BtnRemain"
        android:layout_margin="10dp"
        android:padding="20dp"
        android:text="나머지값"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/TextResult"
        android:textColor="#FF0000"
        android:layout_margin="10dp"
        android:textSize="30dp"
        android:text="계산 결과 : "
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

<java 코드> - 실행 오류 있음.

package com.cookandroid.practice4_1;

import androidx.appcompat.app.AppCompatActivity;

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

public class MainActivity extends AppCompatActivity {

    EditText edit1, edit2;
    Button btnAdd, btnSub, btnMul, btnDiv, btnRemain;
    TextView textResult;
    String num1, num2;
    float result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("초간단 계산기(수정)");

        edit1 = findViewById(R.id.Edit1);
        edit2 = findViewById(R.id.Edit1);
        btnAdd = findViewById(R.id.BtnAdd);
        btnDiv = findViewById(R.id.BtnDiv);
        btnMul = findViewById(R.id.BtnMul);
        btnSub = findViewById(R.id.BtnSub);
        btnRemain = findViewById(R.id.BtnRemain);
        textResult = findViewById(R.id.TextResult);

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                if ((num1.equals("")==true)||(num2.equals("")==true)) {
                    Toast.makeText(getApplicationContext(), "값을 입력하세요", Toast.LENGTH_SHORT).show();
                    return;
                } else {
                    result = Float.parseFloat(num1) + Float.parseFloat(num2);
                    textResult.setText("계산 결과 : " + result);
                }
            }
        });
        btnSub.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                if ((num1.equals("") == true) || (num2.equals("") == true)) {
                    Toast.makeText(getApplicationContext(), "값을 입력하세요", Toast.LENGTH_SHORT).show();
                } else {
                    result = Float.parseFloat(num1) - Float.parseFloat(num2);
                    textResult.setText("계산 결과 : " + result);
                }
            }
        });
        btnMul.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                if ((num1.equals("")==true)||(num2.equals("")==true)) {
                    Toast.makeText(getApplicationContext(), "값을 입력하세요", Toast.LENGTH_SHORT).show();
                } else {
                    result = Float.parseFloat(num1) * Float.parseFloat(num2);
                    textResult.setText("계산 결과 : " + result);
                }
            }
        });
        btnDiv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                if ((num1.equals(""))||(num2.equals(("")))) {
                    Toast.makeText(getApplicationContext(), "값을 입력하세요", Toast.LENGTH_SHORT).show();
                } else if((num2.equals("0"))) {
                    Toast.makeText(getApplicationContext(),"0으로 나눌 수 없습니다.", Toast.LENGTH_SHORT).show();
                }  else {
                    result = Float.parseFloat(num1) / Float.parseFloat(num2);
                    textResult.setText("계산 결과 : " + result);
                }
            }
        });
        btnRemain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                if ((num1.equals("")==true)||(num2.equals("")==true)) {
                    Toast.makeText(getApplicationContext(), "값을 입력하세요", Toast.LENGTH_SHORT).show();
                } else {
                    result = Float.parseFloat(num1) % Float.parseFloat(num2);
                    textResult.setText("계산 결과 : " + result);
                }
            }
        });

    }
}

▶ 실습 4-1에서 수정한 부분

- 나머지값 구하는 버튼 추가

- 값 입력 안하고 버튼 눌렀을 때 오류 메세지 토스트로 나타내기

- 실숫값 계산

- 0으로 나누면 토스트 메세지 나타내고 계산 안하기

 

 오류

1. 숫자2 > 숫자1, 음수 결과가 안나오고 0으로 끝남.

2. "숫자2 = 0일때"라고 if문을 줬는데 "숫자1=0"일때 토스트문이 나타남.

3. 나머지값 계산 제대로 안됨.