2014-09-24 2 views
0

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> 

답변

0

나는 그것을 알아 냈지. 나는 각각의 경우마다 switch 내 명세서에 break 성명을 가지고 있지 않았다. 모두 도움을 주셔서 감사합니다!

-1
입니다

아마 android:text="@string/num_7이 잘못 되었습니까? @string/num_7 실제로 출력 버튼입니까? 1 번 출력용 버튼을 설정 했으므로 다시 확인하십시오!

+0

아니요 올바른 문자열에 맞는 번호가 있습니다. –

+0

아니요, 버튼은 숫자 =가 아닌 @ 문자열/num_7과 같습니다. – Rogier

관련 문제