728x90
한빛아카데미 Android Studio를 활용한 안드로이드 프로그래밍 6판
p.181 직접 풀어보기 4-3
[실습 4-1]을 다음과 같이 수정하라.
- 터치가 아닌 클릭으로 변경한다.
- 나머지값을 구하는 버튼을 추가한다.
- 값을 입력하지 않고 버튼을 클릭할 때 오류 메시지를 토스트 메시지로 나타낸다.
- 실숫값을 계산한다.
- 0으로 나누면 토스트 메시지를 나타내고 계산하지 않는다.
코드
activity_main.xml
<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:id="@+id/BtnAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="더하기" />
<Button
android:id="@+id/BtnSub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="빼기" />
<Button
android:id="@+id/BtnMul"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="곱하기" />
<Button
android:id="@+id/BtnDiv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="나누기" />
<Button
android:id="@+id/BtnRem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="나머지 값" />
<TextView
android:id="@+id/TextResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="계산 결과 : "
android:textColor="#FF0000"
android:textSize="30dp" />
</LinearLayout>
MainActivity.java
package com.cookandroid.test;
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, btnRem;
TextView textResult;
String num1, num2;
Double result;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("초간단 계산기(수정)");
edit1 = findViewById(R.id.Edit1);
edit2 = findViewById(R.id.Edit2);
btnAdd = findViewById(R.id.BtnAdd);
btnSub = findViewById(R.id.BtnSub);
btnMul = findViewById(R.id.BtnMul);
btnDiv = findViewById(R.id.BtnDiv);
btnRem = findViewById(R.id.BtnRem);
textResult = 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.makeText(getApplicationContext(),
"값을 입력하세요", Toast.LENGTH_SHORT).show();
} else {
result = Double.parseDouble(num1)
+ Double.parseDouble(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.makeText(getApplicationContext(),
"값을 입력하세요", Toast.LENGTH_SHORT).show();
} else {
result = Double.parseDouble(num1)
- Double.parseDouble(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.makeText(getApplicationContext(),
"값을 입력하세요", Toast.LENGTH_SHORT).show();
} else {
result = Double.parseDouble(num1)
* Double.parseDouble(num2);
textResult.setText("계산 결과 : "
+ result.toString());
}
}
});
btnDiv.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.makeText(getApplicationContext(),
"값을 입력하세요", Toast.LENGTH_SHORT).show();
} else {
if (num2.trim().equals("0")) {
Toast.makeText(getApplicationContext(),
"0으로 나눌 수 없습니다",
Toast.LENGTH_SHORT).show();
} else {
result = Double.parseDouble(num1)
/ Double.parseDouble(num2);
result = (int) (result * 10) / 10.0;
textResult.setText("계산 결과 : "
+ result.toString(result));
}
}
}
});
btnRem.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.makeText(getApplicationContext(),
"값을 입력하세요", Toast.LENGTH_SHORT).show();
} else {
if (num2.trim().equals("0")) {
Toast.makeText(getApplicationContext(),
"0으로 나눌 수 없습니다",
Toast.LENGTH_SHORT).show();
} else {
result = Double.parseDouble(num1)
% Double.parseDouble(num2);
textResult.setText("계산 결과 : "
+ result.toString());
}
}
}
});
}
}
결과
728x90
'개발 > 책' 카테고리의 다른 글
[명품 웹 프로그래밍] 2장 Open Challenge (0) | 2021.10.10 |
---|---|
[안드로이드 프로그래밍] 6장 직접 풀어보기 6-3 (0) | 2021.10.09 |
[안드로이드 프로그래밍] 6장 직접 풀어보기 6-2 (0) | 2021.10.09 |