ㄱ,, 그러면 안드로이드 스튜디오 비기너의 여행기 출발,,
일단 계산기에는 사칙연산이 들어가야하니까, 사칙연산을 간단하게 구현을 해주었다-!
거기에다가, 나눗셈의 몫을 구했으면 심심치않게 나눗셈의 나머지 값도 나오도록 사칙연산에 버튼 하나를 추가해주었다.
아래에는 간단한 코드 예제만 들어간다, 내가 보완하고자 하는 부분은 계속해서 추가가 될 수 있으니 미리 긴 분량에 대해 사과를,, ✌🏻
//
기본적인 MainActivity.java 관련 코드
//
package com.example.calc;
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 {
Button button1,button2,button3,button4,button5;
EditText text1, text2;
TextView text3;
String num1, num2;
int result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.btn1);
button2 = (Button) findViewById(R.id.btn2);
button3 = (Button) findViewById(R.id.btn3);
button4 = (Button) findViewById(R.id.btn4);
button5 = (Button) findViewById(R.id.btn5);
text1 = (EditText) findViewById(R.id.text1);
text2 = (EditText) findViewById(R.id.text2);
text3 = (TextView) findViewById(R.id.text3);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
num1 = text1.getText().toString();
num2 = text2.getText().toString();
if (num2.equals("") || num1.equals("")) {
Toast.makeText(getApplicationContext(),"숫자를 입력하세요", Toast.LENGTH_SHORT).show();
}
else {
result = Integer.parseInt(num1) + Integer.parseInt(num2);
text3.setText("계산결과 : " + result);
}
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = text1.getText().toString();
num2 = text2.getText().toString();
if (num2.equals("") || num1.equals("")) {
Toast.makeText(getApplicationContext(),"숫자를 입력하세요", Toast.LENGTH_SHORT).show();
}
else {
result = Integer.parseInt(num1) - Integer.parseInt(num2);
text3.setText("계산결과 : " + result);
}
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = text1.getText().toString();
num2 = text2.getText().toString();
if (num2.equals("") || num1.equals("")) {
Toast.makeText(getApplicationContext(),"숫자를 입력하세요", Toast.LENGTH_SHORT).show();
}
else {
result = Integer.parseInt(num1) * Integer.parseInt(num2);
text3.setText("계산결과 : " + result);
}
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = text1.getText().toString();
num2 = text2.getText().toString();
if (num2.equals("") || num1.equals("")) {
Toast.makeText(getApplicationContext(),"숫자를 입력하세요", Toast.LENGTH_SHORT).show();
}
else {
result = Integer.parseInt(num1) / Integer.parseInt(num2);
text3.setText("계산결과 : " + result);
}
}
});
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = text1.getText().toString();
num2 = text2.getText().toString();
if (num2.equals("") || num1.equals("")) {
Toast.makeText(getApplicationContext(),"숫자를 입력하세요", Toast.LENGTH_SHORT).show();
}
else {
result = Integer.parseInt(num1) % Integer.parseInt(num2);
text3.setText("계산결과 : " + result);
}
}
});
}
}
//
기본적인 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:layout_margin="30px">
<EditText
android:layout_marginTop="20px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text1"
android:hint="@string/text1"
/>
<EditText
android:layout_marginTop="20px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text2"
android:hint="@string/text2"
/>
<Button
android:layout_marginTop="40px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn1"
android:text="@string/btn1"
/>
<Button
android:layout_marginTop="40px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn2"
android:text="@string/btn2"
/>
<Button
android:layout_marginTop="40px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn3"
android:text="@string/btn3"
/>
<Button
android:layout_marginTop="40px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn4"
android:text="@string/btn4"
/>
<Button
android:layout_marginTop="40px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn5"
android:text="@string/btn5"
/>
<TextView
android:layout_marginTop="30px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:text="@string/text3"
android:textSize="60px"
android:id="@+id/text3"
/>
</LinearLayout>
근데,, 반복되는 부분이 조금은 많아서 코드가 비효율적이다, 그리고 만약에 상황에 영어나 한글이 입력되었을 때
자동종료되는 이슈가 있는데 이것을 코드를 줄이면서 해결을 해줄 생각이다.
바로, 자바 try-catch 문을 이용하여서 이 오류를 잡아줄 생각이다.
(사용자는 오류를 범했을 때, 다음 과정으로 넘어가지 못하고 오류메세지를 받아 정확한 입력을 하게 된다)
반복되는 부분들은 메인 단에 상속을 받게하여 반복되는 부분들을 최소화 시켜주었다.
//
수정된 MainActivity.java 관련 코드
//
package com.example.calc;
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;
import java.lang.reflect.Type;
import java.net.Proxy;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button button1, button2, button3, button4, button5;
EditText text1, text2;
TextView text3;
String num1, num2;
int result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = (EditText) findViewById(R.id.text1);
text2 = (EditText) findViewById(R.id.text2);
text3 = (TextView) findViewById(R.id.text3);
button1 = (Button) findViewById(R.id.btn1);
button2 = (Button) findViewById(R.id.btn2);
button3 = (Button) findViewById(R.id.btn3);
button4 = (Button) findViewById(R.id.btn4);
button5 = (Button) findViewById(R.id.btn5);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
button5.setOnClickListener(this);
}
@Override
public void onClick(View view) {
num1 = text1.getText().toString();
num2 = text2.getText().toString();
int x, y;
try {
if (num1.equals("") || num2.equals("")) {
Toast.makeText(getApplicationContext(), "숫자를 입력해주세요!", Toast.LENGTH_SHORT).show();
} else {
x = Integer.parseInt(num1);
y = Integer.parseInt(num2);
switch (view.getId()) {
case R.id.btn1:
result = x + y;
break;
case R.id.btn2:
result = x - y;
break;
case R.id.btn3:
result = x * y;
break;
case R.id.btn4:
result = x / y;
break;
case R.id.btn5:
result = x % y;
break;
}
text3.setText("계산결과 : " + result);
}
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "숫자를 입력해주세요!", Toast.LENGTH_SHORT).show();
}
}
}
처음에 파이썬에서 잘만먹던 예외 처리문이 잘 안 먹어서 버벅되었지만, 내가 블럭을 잘못 인지해서 잘못 친 것 같기도 하고,,
다시 예외처리문을 블럭에 맞게 넣으니까 잘 동작한다. 파이썬만큼 자바도 너무 재밌댜
안드로이드 스튜디오 공부가 끝나면 스위프트도 한번 도전해보는 시간을 가지며,,
다음시간에는 C언어 전공책을 다시 한번 복습을 하는 시간을 가지고 한달 포스팅을 시작해보려고 한다-
오늘도 알찬 하루는 끝-!
'개발적인 > 기타 개발적인 부분' 카테고리의 다른 글
IX. 소프트웨어 개발 보안 구축 (0) | 2022.10.09 |
---|---|
VIII. 서버 프로그램 구현 (2) | 2022.10.08 |
VII. SQL 응용 (0) | 2022.10.06 |
V. 인터페이스 (0) | 2022.10.03 |
IV. 통합 구현 (0) | 2022.10.01 |
댓글