2013-10-25 4 views
0

나는 안드로이드 용 간단한 계산기 응용 프로그램을 만들려고 노력 중이며 지금은 붙어 있습니다. 저는 2 개의 계산기를 만들 계획이었습니다 (하나는 기본이고 다른 하나는 Windows에서 만든 것과 비슷합니다). 아이디어는 3 개의 다른 종류에서 그것을 만들기위한 것이었다.java (classes)의 계산기 오류

두 개의 클래스는 "기본"코드 (버튼, 레이아웃)를 포함하고 마지막 클래스는 호출 할 계획 인 함수 (예 : 추가, 곱하기)를 포함해야합니다. 한 클래스에서 두 계산기를 모두 마칠 수 있었지만 다른 클래스의 함수를 호출하는 방법을 모르겠습니다.

문제 : 저는 기본 계산기를 만들 수 있었고 다른 클래스의 함수를 호출 할 수있었습니다.하지만 더 많은 계산을 하나씩 추가하려면 제대로 작동하지 않을 수 있습니다. 내 말은 : 첫 번째 숫자가 1이고 두 번째 숫자가 3이라고 가정 해 봅시다. 결과 4를 인쇄합니다. 다시 추가하고 2를 입력하면 6 대신 결과 5가 인쇄됩니다. 어떻게 든 두 번째 변수를 첫 번째와 나는 :( 이 사람이 나를 도울 수있는 이유를 알아낼 수 없습니다? 감사를 사전

enter code here 


package com.example.simcalc; 

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

public class MainInterface extends Activity implements OnClickListener { 
    static EditText disp; 
    static TextView txt1, txt2; 
    SimFunctions sm; 
    TextView tx1; 
    Button btDot, bt1, bt2, bt3, bt4, bt5, bt6, bt7 ,bt8, bt9, bt0, btPlus, btMinus, btDivide, btMult,btEquals, btC; 
     float num2 =0 , res; 
     float num1 = 0; 
    String saveNumber = ""; 
    static char sim ; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_interface); 
     disp = (EditText) findViewById(R.id.enterNumber); 
     bt1 = (Button) findViewById(R.id.one); 
     bt2 = (Button) findViewById(R.id.two); 
     bt3 = (Button) findViewById(R.id.three); 
     bt4 = (Button) findViewById(R.id.four); 
     bt5 = (Button) findViewById(R.id.five); 
     bt6 = (Button) findViewById(R.id.six); 
     bt7 = (Button) findViewById(R.id.seven); 
     bt8 = (Button) findViewById(R.id.eight); 
     bt9 = (Button) findViewById(R.id.nine); 
     bt0 = (Button) findViewById(R.id.zero); 
     btPlus = (Button) findViewById(R.id.add); 
     btMinus = (Button) findViewById(R.id.sub); 
     btMult = (Button) findViewById(R.id.mult); 
     btDivide = (Button) findViewById(R.id.div); 
     btC = (Button) findViewById (R.id.can); 
     btDot = (Button) findViewById(R.id.decimal); 
     btEquals = (Button) findViewById(R.id.equal); 
     txt1 = (TextView) findViewById(R.id.textView1); 
     txt2 = (TextView) findViewById(R.id.textView2); 
     bt1.setOnClickListener(this); 
     bt2.setOnClickListener(this); 
     bt3.setOnClickListener(this); 
     bt4.setOnClickListener(this); 
     bt5.setOnClickListener(this); 
     bt6.setOnClickListener(this); 
     bt7.setOnClickListener(this); 
     bt8.setOnClickListener(this); 
     bt9.setOnClickListener(this); 
     bt0.setOnClickListener(this); 
     btPlus.setOnClickListener(this); 
     btMinus.setOnClickListener(this); 
     btDivide.setOnClickListener(this); 
     btMult.setOnClickListener(this); 
     btC.setOnClickListener(this); 
     btDot.setOnClickListener(this); 
     btEquals.setOnClickListener(this); 
     disp.setText("0"); 
     sm = new SimFunctions(); 
    } 

    @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_interface, menu); 
     return true; 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch (v.getId()){ 
     case R.id.one: 
      saveNumber += "1"; 
      disp.setText(saveNumber); 
      break; 

     case R.id.two: 
      saveNumber += "2"; 
      disp.setText(saveNumber); 
      break; 

     case R.id.three: 
      saveNumber += "3"; 
      disp.setText(saveNumber); 
      break; 

     case R.id.four: 
      saveNumber += "4"; 
      disp.setText(saveNumber); 
      break; 

     case R.id.five: 
      saveNumber += "5"; 
      disp.setText(saveNumber); 
      break; 

     case R.id.six: 
      saveNumber += "6"; 
      disp.setText(saveNumber); 
      break; 
     case R.id.seven: 
      saveNumber += "7"; 
      disp.setText(saveNumber); 
      break; 

     case R.id.eight: 
      saveNumber += "8"; 
      disp.setText(saveNumber); 
      break; 

     case R.id.nine: 
      saveNumber += "9"; 
      disp.setText(saveNumber); 
      break; 

     case R.id.zero: 
      saveNumber += "0"; 
      disp.setText(saveNumber); 
      break; 


     case R.id.decimal: 
      if (saveNumber.contains(".")){ 
       break; 
      } 
      else{ 
      saveNumber += "."; 
      disp.setText(saveNumber); 
      break; 
      } 
     case R.id.mult: 
      sim = '*'; 
      if (saveNumber != ""){ 
      num1 = Float.parseFloat(saveNumber); 
      saveNumber = ""; 

      break;} 
      else{ 

      break;} 

     case R.id.add: 
      sim = '+'; 
      if (saveNumber != ""){ 
      num1 = Float.parseFloat(saveNumber); 
      saveNumber = ""; 

      break;} 
      else{ 
      break;} 

     case R.id.div: 
      sim = '/'; 
      if (saveNumber != ""){ 
      num1 = Float.parseFloat(saveNumber); 
      saveNumber = ""; 

      break;} 
      else{ 
      break;} 

     case R.id.sub: 
      sim = '-'; 
      if (saveNumber != ""){ 
      num1 = Float.parseFloat(saveNumber); 
      saveNumber = ""; 

      break;} 
      else{ 
      break;} 


     case R.id.equal: 
      sm.equals(num1, saveNumber, sim); 
      break; 

     case R.id.can: 
      saveNumber = ""; 
      disp.setText(saveNumber); 
      break; 

     } 
    } 



} 

    package com.example.simcalc; 


import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class SimFunctions extends MainInterface { 




    public void equals(float num1, String saveNumber, char simbol){ 

     String ds = ""; 
     if (saveNumber != "") { 
      try{ 
       num2 = Float.parseFloat(saveNumber);} 

     catch(NumberFormatException e){ 
       e.printStackTrace(); 
     } 
     } 
     else { 
     num2 = 0;} 
     switch (simbol){ 
     case ('*'): 
      res = num1 * num2; 
      num1 = res; 
      ds = Float.toString(res); 
      disp.setText(ds); 
      saveNumber = ""; 
      ds = ""; 
      break; 

     case ('+'): 
      ds = Float.toString(num1); 
      txt1.setText(ds); 
      ds = Float.toString(num2); 
      txt2.setText(ds); 
      res = num1 + num2; 
      num1 = res; 
      ds = Float.toString(res); 
      disp.setText(ds); 
      saveNumber = ""; 

      ds = ""; 
      break; 

     case ('/'): 
      res = num1/num2; 
      num1 = res; 
      ds = Float.toString(res); 
      disp.setText(ds); 
      saveNumber = "";`enter code here` 
      ds = ""; 
      break; 


    enter code here 
     case ('-'): 
      res = num1 - num2; 
      num1 = res; 
      ds = Float.toString(res); 
      disp.setText(ds); 
      saveNumber = ""; 
      ds = ""; 
      break; 
     } 

    } 



} 

    <RelativeLayout 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:background="@color/testBlack" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainInterface" > 

    <EditText 
     android:id="@+id/enterNumber" 
     android:layout_width="match_parent" 
     android:layout_height="110dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:background="@color/scoreColor" 
     android:inputType="numberDecimal" /> 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/linearLayout2" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="86dp" 
     android:gravity="center" 
     android:orientation="horizontal" 
     android:paddingTop="20dp" > 

     <Button 
      android:id="@+id/seven" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="7" /> 

     <Button 
      android:id="@+id/eight" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="8" /> 

     <Button 
      android:id="@+id/nine" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="9" /> 

     <Button 
      android:id="@+id/div" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="/" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayout2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/linearLayout1" 
     android:layout_alignLeft="@+id/enterNumber" 
     android:gravity="center" 
     android:orientation="horizontal" 
     android:paddingTop="20dp" > 

     <Button 
      android:id="@+id/four" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="4" /> 

     <Button 
      android:id="@+id/five" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="5" /> 

     <Button 
      android:id="@+id/six" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="6" /> 

     <Button 
      android:id="@+id/mult" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="*" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/linearLayout2" 
     android:layout_below="@+id/enterNumber" 
     android:layout_marginTop="20dp" 
     android:gravity="center" 
     android:orientation="horizontal" 
     android:paddingTop="20dp" > 

     <Button 
      android:id="@+id/one" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="1" /> 

     <Button 
      android:id="@+id/two" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="2" /> 

     <Button 
      android:id="@+id/three" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="3" /> 

     <Button 
      android:id="@+id/sub" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="-" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayout3" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/linearLayout1" 
     android:layout_alignParentBottom="true" 
     android:gravity="center" 
     android:orientation="horizontal" 
     android:paddingTop="20dp" > 

     <Button 
      android:id="@+id/can" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="c" /> 

     <Button 
      android:id="@+id/zero" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="0" /> 

     <Button 
      android:id="@+id/equal" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="=" /> 

     <Button 
      android:id="@+id/add" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="+" /> 

     <Button 
      android:id="@+id/decimal" 
      android:layout_width="55dp" 
      android:layout_height="wrap_content" 
      android:text="." /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/linearLayout3" 
     android:layout_alignParentLeft="true" 
     android:text="Small Text" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/linearLayout3" 
     android:layout_toRightOf="@+id/textView1" 
     android:text="TextView" /> 

</RelativeLayout> 

답변

0

당신은 글로벌 var에 'NUM1'. 누르면 다음에 '로 조작의 결과를 가하고 있습니다에 + '이 값을 으로 덮어 씁니다. 이전 saveNumber 값

논리가 다음과 같습니다.

1 -> savenumber = 1 
+ -> num1 = 1 
3 -> savenumber = 3 
= -> num2 = savenumber 
    -> res = num1 + num2 
    -> num1 = res 
+ -> num1 = savenumber = 3 
2 -> savenumber = 2 
= -> num2 = savenumber 
    -> res = num1 + num2 
      = 3 + 2 
+0

타이 답장을 보내 주시면 나는 그와 같은 것이 문제 여야한다는 것을 이해했지만 완전히 이해할 수는 없습니다. 내 말은 내가 saveNumber 넣어 = ""num1 + num2 계산 한 이유는 여전히 3 값이있는 것처럼 saveNumber 여전히 취급합니까? 나는 바보 같아서 이걸 고치는 법을 알아 내지 못한다 ... – Proxy

+0

어제 끝까지 해결할 수 있었다. 나는 동등 함수의 인수를 String saveNumber에서 sNumber로 바꿨다. 왜냐하면 나는 로컬 변수 saveNumber를 전역 변수가 아닌 하나를 참조하기 전에 이해했기 때문이다. 또한 전역 saveNumber를 정적 saveNumber로 변경해야했습니다. – Proxy