728x90
반응형
|
한빛아카데미 IT COOKBOOK 276 Android Studio를 활용한 안드로이드 프로그래밍 5판 p.181
[실습 4-1]에 다음과 같이 기능을 추가하거나 변경하라.
터치가 아닌 클릭으로 변경
나머지값 구하기 버튼 추가
값을 입력하지 않고, 버튼을 클릭할 때 오류 메시지를 토스트로 나타내기
실숫값 계산하기
0으로 나누면 토스트 메시지를 나타내고 계산하지 않기
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<EditText
android:id="@+id/Edit1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="숫자 1"
/>
<EditText
android:id="@+id/Edit2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="숫자 2"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="더하기"
android:id="@+id/BtnAdd"
android:clickable="true"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="빼기"
android:id="@+id/BtnSub"
android:clickable="true"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="곱하기"
android:id="@+id/BtnMul"
android:clickable="true"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="나누기"
android:id="@+id/BtnDiv"
android:clickable="true"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="나머지"
android:id="@+id/BtnExt"
android:clickable="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/TextResult"
android:textSize="30dp"
android:textColor="#FF0000"
android:layout_margin="10dp"
android:text="계산 결과 : "
/>
</LinearLayout>
나머지 버튼을 하나 추가했고, 터치가 아닌 클릭으로 변경이 있기 때문에 android:clickable="true"속성을 추가했습니다.
MainActivity.java
package com.cookandroid.project4_1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
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, btnExt;
TextView textResult;
String num1, num2;
Float result;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("초간단 계산기(수정)");
Edit1=(EditText) findViewById(R.id.Edit1);
Edit2=(EditText) findViewById(R.id.Edit2);
btnAdd=(Button) findViewById(R.id.BtnAdd);
btnSub=(Button) findViewById(R.id.BtnSub);
btnMul=(Button) findViewById(R.id.BtnMul);
btnDiv=(Button) findViewById(R.id.BtnDiv);
btnExt=(Button) findViewById(R.id.BtnExt);
textResult=(TextView) findViewById(R.id.TextResult);
btnAdd.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
num1=Edit1.getText().toString();
num2=Edit2.getText().toString();
if (num1.trim().equals("")||num2.trim().equals("")){
Toast myToast = Toast.makeText(getApplicationContext(),"입력 값이 비었습니다.", Toast.LENGTH_SHORT);
myToast.show();
} else {
result=Float.parseFloat(num1) + Float.parseFloat(num2);
textResult.setText("계산 결과 : " + result.toString());
}
}
});
btnSub.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
num1=Edit1.getText().toString();
num2=Edit2.getText().toString();
if(num1.trim().equals("")||num2.trim().equals("")){
Toast myToast = Toast.makeText(getApplicationContext(),"입력 값이 비었습니다.", Toast.LENGTH_SHORT);
myToast.show();
} else {
result=Float.parseFloat(num1) - Float.parseFloat(num2);
textResult.setText("계산 결과 : " + result.toString());
}
}
});
btnMul.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
num1=Edit1.getText().toString();
num2=Edit2.getText().toString();
if (num1.trim().equals("")||num2.trim().equals("")){
Toast myToast = Toast.makeText(getApplicationContext(),"입력 값이 비었습니다.", Toast.LENGTH_SHORT);
myToast.show();
} else {
result=Float.parseFloat(num1) * Float.parseFloat(num2);
textResult.setText("계산 결과 : " + result.toString());
}
}
});
btnDiv.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
num1=Edit1.getText().toString();
num2=Edit2.getText().toString();
String zero="0";
if(num1.trim().equals("")||num2.trim().equals("")){
Toast myToast=Toast.makeText(getApplicationContext(), "입력 값이 비었습니다.", Toast.LENGTH_SHORT);
myToast.show();
} else if(num2.equals(zero)){
Toast myToast = Toast.makeText(getApplicationContext(),"0으로 나눌 수 없습니다.", Toast.LENGTH_SHORT);
myToast.show();
} else {
result=Float.parseFloat(num1) / Float.parseFloat(num2);
textResult.setText("계산 결과 : " + result.toString());
}
}
});
btnExt.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
num1=Edit1.getText().toString();
num2=Edit2.getText().toString();
if(num1.trim().equals("")||num2.trim().equals("")){
Toast myToast = Toast.makeText(getApplicationContext(), "입력 값이 비었습니다.", Toast.LENGTH_SHORT);
myToast.show();
} else {
result=Float.parseFloat(num1) % Float.parseFloat(num2);
textResult.setText("계산 결과 : " + result.toString());
}
}
});
}
}
각 버튼에 result가 실숫값을 계산해야하므로 parseInt가 아닌 parseFloat를 적용했고, 입력값이 없고 버튼을 누르면
토스트 메시지가 출력되어야 하므로 Toast를 추가했습니다.
0으로 나눌 시에는 계산하지 않고 토스트 메시지를 출력해야 하므로 else if를 사용하여 조건을 추가했습니다.
버튼들도 setOnTouchListener가 아니라 setOnClickListener를 사용했습니다.
Android Studio AVD 실행 결과
728x90
반응형
'Dev > 안드로이드' 카테고리의 다른 글
안드로이드 프로그래밍 6장 직접 풀어보기 6-1 (0) | 2020.05.26 |
---|---|
안드로이드 프로그래밍 6장 실습 6-1 (0) | 2020.05.24 |
안드로이드 프로그래밍 5장 연습문제 4번 (0) | 2020.05.07 |
안드로이드 프로그래밍 4장 직접 풀어보기 4-4 (0) | 2020.05.06 |
안드로이드 프로그래밍 5장 실습 5-2 (0) | 2020.05.04 |