Android가 처음인데 두 개의 피연산자를 사용하여 더하기, 빼기, 곱하기 또는 나눗셈을하는 간단한 계산기 앱을 만들려고합니다. 내가 겪고있는 문제는 올바른 형식으로 입력 한 후 equals를 치면 나에게 0 또는 1의 결과를 준다는 것입니다. 객체를 함께 비교하고 같지 않으면 0을 반환하고 그렇지 않으면 0을 반환한다고 생각합니다. 같은,하지만 어떤 개체를 비교하고 있는지 전혀 모른다. 내가 도대체 뭘 잘못하고있는 겁니까? Android 계산기 앱을 만드는 데 문제가 있습니다.
이
내 MainActivity.java 파일입니다package com.example.simplecalculator;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.*;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends ActionBarActivity implements OnClickListener
{
private EditText output;
private Button num_0;
private Button num_1;
private Button num_2;
private Button num_3;
private Button num_4;
private Button num_5;
private Button num_6;
private Button num_7;
private Button num_8;
private Button num_9;
private Button op_plus;
private Button op_minus;
private Button op_multiply;
private Button op_divide;
private Button equals;
private Button clear;
private long operand1;
private long operand2;
private long result;
private String operator;
private StringBuilder set1;
private StringBuilder set2;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
operator = "";
operand1 = -1;
operand2 = -1;
set1 = new StringBuilder();
set2 = new StringBuilder();
output = (EditText)findViewById(R.id.output);
num_0 = (Button)findViewById(R.id.num_0);
num_1 = (Button)findViewById(R.id.num_1);
num_2 = (Button)findViewById(R.id.num_2);
num_3 = (Button)findViewById(R.id.num_3);
num_4 = (Button)findViewById(R.id.num_4);
num_5 = (Button)findViewById(R.id.num_5);
num_6 = (Button)findViewById(R.id.num_6);
num_7 = (Button)findViewById(R.id.num_7);
num_8 = (Button)findViewById(R.id.num_8);
num_9 = (Button)findViewById(R.id.num_9);
op_plus = (Button)findViewById(R.id.op_plus);
op_minus = (Button)findViewById(R.id.op_minus);
op_multiply = (Button)findViewById(R.id.op_multiply);
op_divide = (Button)findViewById(R.id.op_divide);
equals = (Button)findViewById(R.id.equals);
clear = (Button)findViewById(R.id.clear);
num_0.setOnClickListener(this);
num_1.setOnClickListener(this);
num_2.setOnClickListener(this);
num_3.setOnClickListener(this);
num_4.setOnClickListener(this);
num_5.setOnClickListener(this);
num_6.setOnClickListener(this);
num_7.setOnClickListener(this);
num_8.setOnClickListener(this);
num_9.setOnClickListener(this);
op_plus.setOnClickListener(this);
op_minus.setOnClickListener(this);
op_multiply.setOnClickListener(this);
op_divide.setOnClickListener(this);
equals.setOnClickListener(this);
clear.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.num_0:
output.append(num_0.getText());
if(operand1 == -1)
{
set1.append(num_0.getText().toString());
}
else
{
set2.append(num_0.getText().toString());
}
break;
case R.id.num_1:
output.append(num_1.getText());
if(operand1 == -1)
{
set1.append(num_1.getText().toString());
}
else
{
set2.append(num_1.getText().toString());
operand2 = Long.parseLong(set2.toString());
}
break;
case R.id.num_2:
output.append(num_2.getText());
if(operand1 == -1)
{
set1.append(num_2.getText().toString());
}
else
{
set2.append(num_2.getText().toString());
}
break;
case R.id.num_3:
output.append(num_3.getText());
if(operand1 == -1)
{
set1.append(num_3.getText().toString());
}
else
{
set2.append(num_3.getText().toString());
}
break;
case R.id.num_4:
output.append(num_4.getText());
if(operand1 == -1)
{
set1.append(num_4.getText().toString());
}
else
{
set2.append(num_4.getText().toString());
}
break;
case R.id.num_5:
output.append(num_5.getText());
if(operand1 == -1)
{
set1.append(num_5.getText().toString());
}
else
{
set2.append(num_5.getText().toString());
}
break;
case R.id.num_6:
output.append(num_6.getText());
if(operand1 == -1)
{
set1.append(num_6.getText().toString());
}
else
{
set2.append(num_6.getText().toString());
}
break;
case R.id.num_7:
output.append(num_7.getText());
if(operand1 == -1)
{
set1.append(num_7.getText().toString());
}
else
{
set2.append(num_7.getText().toString());
}
break;
case R.id.num_8:
output.append(num_8.getText());
if(operand1 == -1)
{
set1.append(num_8.getText().toString());
}
else
{
set2.append(num_8.getText().toString());
}
break;
case R.id.num_9:
output.append(num_9.getText());
if(operand1 == -1)
{
set1.append(num_9.getText().toString());
}
else
{
set2.append(num_9.getText().toString());
}
break;
case R.id.op_plus:
if(operand1 == -1)
{
operator = "+";
operand1 = Long.parseLong(set1.toString());
output.append(operator);
}
break;
case R.id.op_minus:
if(operand1 == -1)
{
operator = "-";
operand1 = Long.parseLong(set1.toString());
output.append(operator);
}
break;
case R.id.op_multiply:
if(operand1 == -1)
{
operator = "*";
operand1 = Long.parseLong(set1.toString());
output.append(operator);
}
break;
case R.id.op_divide:
if(operand1 == -1)
{
operator = "/";
operand1 = Long.parseLong(set1.toString());
output.append(operator);
}
break;
case R.id.equals:
operand2 = Long.parseLong(set2.toString());
switch(operator)
{
case "+":
result = operand1 + operand2;
case "-":
result = operand1 - operand2;
case "*":
result = operand1 * operand2;
case "/":
result = operand1/operand2;
}
output.setText(""+result);
operator = null;
operand1 = -1;
operand2 = -1;
set1.setLength(0);
set2.setLength(0);
break;
case R.id.clear:
output.setText("");
operator = null;
operand1 = -1;
operand2 = -1;
set1.setLength(0);
set2.setLength(0);
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings)
{
return true;
}
return super.onOptionsItemSelected(item);
}
}
그리고 이것은
<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"
tools:context="com.example.simplecalculator.MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1" >
<EditText
android:id="@+id/output"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/start_value">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1" >
<Button
android:id="@+id/num_7"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_7">
</Button>
<Button
android:id="@+id/num_8"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_8">
</Button>
<Button
android:id="@+id/num_9"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_9">
</Button>
<Button
android:id="@+id/op_plus"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/op_plus">
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1" >
<Button
android:id="@+id/num_4"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_4">
</Button>
<Button
android:id="@+id/num_5"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_5">
</Button>
<Button
android:id="@+id/num_6"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_6">
</Button>
<Button
android:id="@+id/op_minus"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/op_minus">
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1" >
<Button
android:id="@+id/num_1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_1">
</Button>
<Button
android:id="@+id/num_2"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_2">
</Button>
<Button
android:id="@+id/num_3"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_3">
</Button>
<Button
android:id="@+id/op_multiply"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/op_multiply">
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1" >
<Button
android:id="@+id/num_0"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/num_0">
</Button>
<Button
android:id="@+id/clear"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/clear">
</Button>
<Button
android:id="@+id/equals"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/equals">
</Button>
<Button
android:id="@+id/op_divide"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/op_divide">
</Button>
</LinearLayout>
</LinearLayout>
편집 내 activity_main.xml입니다 : 여기 내 strings.xml의 파일뿐만 아니라
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">SimpleCalculator</string>
<string name="action_settings">Settings</string>
<string name="start_value"></string>
<string name="num_0">0</string>
<string name="num_1">1</string>
<string name="num_2">2</string>
<string name="num_3">3</string>
<string name="num_4">4</string>
<string name="num_5">5</string>
<string name="num_6">6</string>
<string name="num_7">7</string>
<string name="num_8">8</string>
<string name="num_9">9</string>
<string name="op_plus">+</string>
<string name="op_minus">-</string>
<string name="op_multiply">*</string>
<string name="op_divide">/</string>
<string name="clear">C</string>
<string name="equals">=</string>
</resources>
아니요 올바른 문자열에 맞는 번호가 있습니다. –
아니요, 버튼은 숫자 =가 아닌 @ 문자열/num_7과 같습니다. – Rogier