2013-03-20 2 views
1

나는 안드로이드에서 초보자입니다. 나는 단지 하나의 입력 편집 텍스트로 계산기를 만들려고 노력하고있다. + 버튼을 클릭하면 합계 출력이 표시되지 않습니다. 올바른 ans를 얻으려면 두 항목 뒤에 + 버튼을 클릭해야합니다. 도와 someoneplease "+"1 "+" "=. 다음은, 여기 내 코드의 2 줄 것이라고 내가 1로 할 것 합계를 얻을 것을 좋아합니다.하나의 입력이있는 계산기 edittext android

public void onClick(View v){ 
    double sum=0; 
    switch(v.getId()){ 
    case R.id.buttonplus: 
     sum += Double.parseDouble(String.valueOf(textView.getText())); 
     numberDisplayed.delete(0,numberDisplayed.length()); 
     break; 
    case R.id.buttonequal: 
     resultView.setText(String.valueOf(sum)); 
     sum=0; 
    } 
+0

에 오신 것을 환영합니다 SO에 뭔가를 추가하기 위해 다시 눌러야합니다. 너의 문제는 .. 뭐야? – Pragnani

+0

계산기를 만들려고하는데 버튼이 제대로 작동하지 않습니다. 위의 코드는 플러스와 같음의 두 가지 사례를 보여줍니다. 그래서 두 개는 두 개의 숫자를 더합니다. 두 개의 숫자 뒤에 pluss 버튼을 눌러야 만합니다. 그 숫자를 추가하려면 ans가 필요합니다. 하지만 한 번의 클릭으로 모든 버튼을 원합니다. – shahwarcoder

답변

1

내가 제대로 이해하면, 당신이 원하는 당신이이 button를 "동일"누른 후 합계를 표시합니다. 그렇다면, 당신은 당신이 누를 때 아직이 줄

sum += Double.parseDouble(String.valueOf(textView.getText())); 

또한

case R.id.buttonequal: 
    sum += Double.parseDouble(String.valueOf(textView.getText())); 
    resultView.setText(String.valueOf(sum)); 
    sum=0; 

이 두 번째 숫자가 입력되지를해야하는 경우 "플러스"button이므로 합계는 첫 번째 숫자입니다. 그럼 당신은

if (lastOp.equals("sub") 
{ 
    sum -= Double.parseDouble(String.valueOf(textView.getText())); 
... 
} 

예처럼, 그래서 BTN 누르면 동일한 경우에 sum

public class SimpleCalculatorActivity extends Activity 
{ 
    //variables needing class scope 
    double answer = 0, number1, number2; 
    int operator = 0, number; 
    boolean hasChanged = false, flag = false; 
    String display = null; 
    String display2 = null; 
    String curDisplay = null; 
    String calcString = ""; 
    String inputLabel; 
    String inputString = null; 
    String inputString2 = null; 
    String inputString3 = null; 


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

     initButtons();  
    } 
     //when button is pressed, send num to calc function 
     button1.setOnClickListener 
     (new Button.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        inputString = button1.getText().toString(); 
        displayCalc(inputString); 
       } 
      } 
     ); 

     button2.setOnClickListener 
     (new Button.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        inputString = button2.getText().toString(); 
        displayCalc(inputString); 
       } 
      } 
     ); 
     ... 
     //send operator to calc function 
     addButton.setOnClickListener 
     (new Button.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        calculation(1); 
       } 
      } 
     ); 

     subButton.setOnClickListener 
     (new Button.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        calculation(2); 
       } 
      } 
     );  
     calcButton.setOnClickListener 
     (new Button.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        calculation(5); 
       } 
      } 
     ); 

     clearButton.setOnClickListener 
     (new Button.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        calculation(6); 
       } 
      } 
     ); 
    } 

    //function to calculate 
    public void calculation(int input) 
    { 
     number = input; 

     //see which operator was clicked 
     switch (number) 
     { 
      case 1: 
       operator = 1; 
       hasChanged = true; 
       display = ""; 
       showDisplay("+"); 
       break; 
      case 2: 
       operator = 2; 
       hasChanged = true; 
       display = ""; 
       showDisplay("-");    
       break; 
      case 3: 
       operator = 3; 
       hasChanged = true; 
       display = ""; 
       showDisplay("*"); 
       break; 
      case 4: 
       operator = 4; 
       hasChanged = true; 
       display = ""; 
       showDisplay("/"); 
       break; 
      case 5: 
       number2 = Double.parseDouble(display2); 
       if(number2 == 0) 
       { 
        custErrMsg(); 
       } 
       else 
       { 
        operator(); 
        displayAnswer(answer); 
        hasChanged = true; 
       } 
       break; 
      case 6: 
       clear(); 
       break; 
      default: 
       clear(); 
       break; 
     } 
    } 

    private void operator() 
    { 
     if (operator != 0) 
     { 
      if (operator == 1) 
      { 
       answer = number1 + number2; 
      } 
      else if (operator == 2) 
      { 
       answer = number1 - number2; 
      } 
      else if (operator == 3) 
      { 
       answer = number1 * number2; 
      } 
      else if (operator == 4) 
      { 
       answer = number1/(number2); 
      } 
     } 
    } 

    private void displayCalc(String curValue) 
    { 
     String curNum = curValue; 

     if (!hasChanged) 
     { 
      if (display == null) 
      { 
       //display number if reset 
       inputString2 = curNum; 
       display = inputString2;  
       showDisplay(display); 

      } 
      else 
      { 
       //display previous input + new input 
       inputString2 = inputString2 + curNum; 
       display = display + curNum; 
       showDisplay(display); 
      } 
     } 
     else              
     { 
      displayNum2(curNum); 
     } 
    } 

    private void displayNum2 (String curValue2) 
    { 
     String curNum2; 
     curNum2 = curValue2; 
     if (!flag) 
     { 
      //display number if reset 
      inputString3 = curNum2; 
      display2 = inputString3; 
      number1 = Double.parseDouble(inputString2); 
      flag = true; 
     } 
     else 
     { 
      //display previous input + new input 
      inputString3 = curNum2; 
      display2 = display2 + curNum2; 
     } 
     showDisplay(inputString3); 
    } 

    private void displayAnswer(double curAnswer) 
    { 
     String finAnswer = String.valueOf(curAnswer); 
     TextView textView1 = (TextView) findViewById(R.id.textView1); 
     textView1.setBackgroundColor(0xffffffff); 
     textView1.setText(finAnswer); 
    } 

    private void showDisplay(String output) 
    { 
     inputLabel = output; 
     TextView textView1 = (TextView) findViewById(R.id.textView1); 
     textView1.setBackgroundColor(0xffffffff); 

     if (operator != 0) 
     { 
      curDisplay = textView1.getText().toString(); 
      textView1.setText(curDisplay + inputLabel); 
     }  
     else 
     { 
      textView1.setText(inputLabel); 
     } 
    } 
+0

하지만 버튼을 빼기, 곱하기 버튼, 나누기 버튼 등 모든 버튼에 대해 수행하고 싶다면 무엇을해야합니까? – shahwarcoder

+0

이 문제를 해결하는 방법에는 여러 가지가 있습니다. 내가 집에 왔을 때 나는 오래 전에 내가 어떻게했는지를 봐야했을 것이다. 그러나 나는 어떤 연산자가 마지막으로 사용되었는지 추적하고 "equals"버튼에 건네 주었다고 생각한다. – codeMagic

+0

하지만 내가 말했듯이 그렇게했다면 새로운 케이스에 들어가서 sum 값이 다시 0이됩니다. – shahwarcoder