2012-02-24 3 views
1

나는 게임을위한 점수 판으로 사용하기 위해 간단한 계산기를 디자인하려고합니다. 궁극적으로, 나는 선수의 수를 선택하고, 많은 점수 기록계가 화면에 나타나도록하고, 터치 계산기를 사용하여 더하거나 빼거나 (또는 ​​나누거나 곱하기 위해) 내가 가장 잘 작동하도록 할 수 있기를 원합니다. 부품.계산기 문제 - Android 프로그래밍

현재 계산기 화면에 입력 된 텍스트를 가져와 내가 선택한 플레이어 점수에 추가/제거합니다.

문제는 숫자 키를 계산기 표시 부분에 표시하려고하는 것입니다. 예를 들어, 나는 "1"을 누른 다음 "0"을 칠 수 있고 "10"이 계산기에 나타나길 원합니다. 내가 안드로이드 기본 키보드를 사용하여 수동으로 텍스트를 입력 할 수 있으므로 쉽게 볼 수 있어야합니다. 그러나 가장 가까운 것은 한 번에 하나의 숫자 만 표시하는 것입니다 ...

긴 이야기 짧은 , 나는 터치 패드 형 계산기의 숫자 버튼을 작동시키고 표시하려고 노력 중이다. 아래는 내 프로젝트 코드입니다. 내 레이아웃 코드가 필요한 경우이를 게시 할 수도 있습니다 (ID에 대한 참조).

아마 간단한 해결책 일 것입니다. 그러나 모든 자습서는 지나치게 복잡하거나 작동하지 않습니다 ... 어떤 도움도 대단히 감사하겠습니다!

package com.MCalculator8.test; 

import com.MCalculator8.test.R; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MCalculator8Activity extends Activity { 
    private EditText player1name; 
    private EditText player2name; 
    private EditText player3name; 
    private EditText player4name; 
    private EditText player5name; 
    private EditText player6name; 
    private EditText player7name; 

    private EditText player1score; 
    private EditText player2score; 
    private EditText player3score; 
    private EditText player4score; 
    private EditText player5score; 
    private EditText player6score; 
    private EditText player7score; 

    private EditText input; 

    private TextView operator; 
    private MCalculator8Activity mContext; 

    // Called when the activity is first created. 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      mContext = this; 

      setContentView(R.layout.main); 

      player1name = (EditText) findViewById(R.id.player1name); 
      player2name = (EditText) findViewById(R.id.player2name); 
      player3name = (EditText) findViewById(R.id.player3name); 
      player4name = (EditText) findViewById(R.id.player4name); 
      player5name = (EditText) findViewById(R.id.player5name); 
      player6name = (EditText) findViewById(R.id.player6name); 
      player7name = (EditText) findViewById(R.id.player7name); 

      input = (EditText) findViewById(R.id.input); 

      player1score = (EditText) findViewById(R.id.player1score); 
      player2score = (EditText) findViewById(R.id.player2score); 
      player3score = (EditText) findViewById(R.id.player3score); 
      player4score = (EditText) findViewById(R.id.player4score); 
      player5score = (EditText) findViewById(R.id.player5score); 
      player6score = (EditText) findViewById(R.id.player6score); 
      player7score = (EditText) findViewById(R.id.player7score); 

      operator = (TextView) findViewById(R.id.operator); 

      // We create an OnClick Event in each button. 

      Button plusButton = (Button) findViewById(R.id.add); 
      Button minusButton = (Button) findViewById(R.id.subtract); 
      Button multiplyButton = (Button) findViewById(R.id.multiply); 
      Button player1equals = (Button) findViewById(R.id.player1equals); 
      Button player2equals = (Button) findViewById(R.id.player2equals); 
      Button player3equals = (Button) findViewById(R.id.player3equals); 
      Button player4equals = (Button) findViewById(R.id.player4equals); 
      Button player5equals = (Button) findViewById(R.id.player5equals); 
      Button player6equals = (Button) findViewById(R.id.player6equals); 
      Button player7equals = (Button) findViewById(R.id.player7equals); 

      plusButton.setOnClickListener(new OnClickListener() { 

        public void onClick(View arg0) { 

          operator.setText("+"); 

        } 

      }); 

      minusButton.setOnClickListener(new OnClickListener() { 

        public void onClick(View arg0) { 

          operator.setText("-"); 

        } 

      }); 

      multiplyButton.setOnClickListener(new OnClickListener() { 

        public void onClick(View arg0) { 

          operator.setText("x"); 

        } 

      }); 


      player1equals.setOnClickListener(new OnClickListener() { 

        private AlertDialog show; 

        public void onClick(View arg0) { 

          if ((input.getText().length() == 0) 
              || (input.getText().toString() == " ")) { 
             // || (input2.getText().length() == 0) 
             // || (input2.getText().toString() == " ")) { 

            show = new AlertDialog.Builder(mContext).setTitle("Error") 
                .setMessage("Some inputs are empty") 
                .setPositiveButton("OK", null).show(); 

          } else if (operator.getText().equals("")) { 

            show = new AlertDialog.Builder(mContext).setTitle("Error") 
                .setMessage("Operator is null").setPositiveButton(
                    "OK", null).show(); 

          } else if (operator.getText().equals("+")) { 

            double result = new Double(input.getText().toString()) 
                + new Double(player1score.getText().toString()); 

            player1score.setText(Double.toString(result)); 

          } else if (operator.getText().equals("-")) { 

            double result = new Double(player1score.getText().toString()) 
                - new Double(input.getText().toString()); 

            player1score.setText(Double.toString(result)); 

          } else if (operator.getText().equals("x")) { 

            double result = new Double(input.getText().toString()) 
                * new Double(player1score.getText().toString()); 


            player1score.setText(Double.toString(result)); 

          } 

        } 

      }); 

답변

1

이 예가 어떻습니까? 여기

메인 클래스 "CalculatorExample.java"

package com.calculatorExample; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class CalculatorExample extends Activity implements android.view.View.OnClickListener{ 
    Button add, subtract, multiply, divide; 
    TextView firstInput, secondInput, output; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Reference TextViews and Buttons 
     firstInput = (TextView) findViewById(R.id.firstIput); 
     secondInput = (TextView) findViewById(R.id.secondInput); 
     output = (TextView) findViewById(R.id.output); 
     add = (Button) findViewById(R.id.add); 
     subtract = (Button) findViewById(R.id.subtract); 
     multiply = (Button) findViewById(R.id.multiply); 
     divide = (Button) findViewById(R.id.divide); 

     // Set listeners for when buttons are pressed 
     add.setOnClickListener(this); 
     subtract.setOnClickListener(this); 
     multiply.setOnClickListener(this); 
     divide.setOnClickListener(this); 

    } 

    /** 
    * Switch statement to decide which button was pressed 
    */ 
    public void onClick(View arg0) { 
     // Get values from top two TextViews 
     double firstInputValue = Double.parseDouble(firstInput.getText().toString()); 
     double secondInputValue = Double.parseDouble(secondInput.getText().toString()); 
     // Initialise output 
     double outputValue = 0; 

     // Perform relevant operations 
     switch(arg0.getId()){ 
     case R.id.add: 
      outputValue = firstInputValue + secondInputValue; 
      break; 
     case R.id.subtract: 
      outputValue = firstInputValue - secondInputValue; 
      break; 
     case R.id.multiply: 
      outputValue = firstInputValue * secondInputValue; 
      break; 
     case R.id.divide: 
      outputValue = firstInputValue/secondInputValue; 
      break; 
     } 
     // Add result to Running total stored in output TextView 
     outputValue += Double.parseDouble(output.getText().toString()); 
     output.setText("" + outputValue); 

    } 
} 

라고 그리고 여기 나를 혼란 무엇 XML 파일 ("main.xml에")

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <LinearLayout 
     android:weightSum="100" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
    > 
     <EditText 
      android:layout_weight="50" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/firstIput"> 
     </EditText> 
     <EditText 
      android:layout_weight="50" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/secondInput"> 
     </EditText> 
    </LinearLayout> 
    <LinearLayout 
     android:weightSum="100" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
    > 
     <Button 
      android:layout_weight="50" 
      android:text="+" 
      android:id="@+id/add" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
     </Button> 
     <Button 
      android:layout_weight="50" 
      android:text="-" 
      android:id="@+id/subtract" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
     </Button> 
    </LinearLayout> 
    <LinearLayout 
     android:weightSum="100" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
    > 
     <Button 
      android:layout_weight="50" 
      android:text="X" 
      android:id="@+id/multiply" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
     </Button> 
     <Button 
      android:layout_weight="50" 
      android:text="/" 
      android:id="@+id/divide" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
     </Button> 
    </LinearLayout> 
    <EditText 
     android:text="0.0" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/output"> 
    </EditText> 
</LinearLayout> 
+0

빠른 데모 주셔서 감사합니다! 나는 모든 준비가 계산기의 일부가 작동하지만, 나는 계산기의 "터치 패드"부분에 대해 우려하고있다. 더 구체적으로 textedit (또는 textview) 필드에 누를 숫자를 추가하는 방법. 예를 들어, "1"버튼을 누른 다음 "2"버튼 (화면)을 누르면 textedit 필드에 "12"가 표시됩니다. 그것은 아주 간단하게 들리지만, 나는 그것을 작동시키지 못합니다. 나는 오늘 그것을 혼란스럽게 할 것이고, 내가 그것을 작동시킬 수 있다면 게시 할 것이다. 그 동안 어떤 조언도 부탁드립니다 !! – user1231255

+0

데모에서 어떻게하는지 보여줍니다. outputValue + = Double.parseDouble (output.getText(). toString()); 해당 코드는 현재 editText에있는 내용을 가져오고 그 아래의 줄은 그 내용을 추가합니다. – Jon

+0

예, 추가되었지만 필드를 추가하지 않습니다. Doubles 두 문자열을 모두 추가하면 기존 숫자 뒤에 숫자를 추가하는 대신 문자 그대로 숫자를 더하고 합계를 출력합니다. 어쨌든 많은 작업을 할 시간이 없었습니다. 몇 가지 아이디어가 있으며 필드를 추가하는 방법에 대한 자습서를 찾았습니다. 현재 문자열을 저장할 수있는 "보이지 않는"textview 상자를 추가하고 해당 문자열의 끝 부분에 눌린 번호를 추가하고 업데이트 한 다음 계산기의 textedit 상자에 출력해야합니다. 그것은 그것을하는 우회 길로 보인다. 그러나 잘만되면 그것은 일할 것이다! – user1231255

1

계산기의 버튼을 누를 때마다 추가 할 수있는 문자열이 없습니까? 그런 다음 계산기 디스플레이를 새 문자열로 업데이트 하시겠습니까?

+0

이입니다. 나는 그것을 작동 시키려고 노력했지만, 나는 틀린 일을해야만한다. 나는 아직 코딩의 100 %를 이해하지 못한다 ... – user1231255