Как ввести дробное число? - PullRequest
0 голосов
/ 21 февраля 2011

Я новичок в разработке Java Android.Я использую версию Eclipse SDK 3.6.1.Я пытаюсь сделать простой калькулятор.У меня есть одна проблема, как ввести дробное число?Вот мой код:

@Override
public void onClick(View view) {
  switch (view.getId()) {      

     case R.id.btnNum0Id:
     case R.id.btnNum1Id:
     case R.id.btnNum2Id:
     case R.id.btnNum3Id:
     case R.id.btnNum4Id:
     case R.id.btnNum5Id:
     case R.id.btnNum6Id:
     case R.id.btnNum7Id:
     case R.id.btnNum8Id:
     case R.id.btnNum9Id:

        String inDigit = ((Button)view).getText().toString(); 
        if (inStr.equals("0")) {  
           inStr = inDigit;    
        } else {
           inStr += inDigit;   
        }
        tekstas.setText(inStr);

        if (Operator == '=') {
           rezult = 0;
           Operator = ' ';
        }
        break;            

     case R.id.btnAddId:
        aritmetika();
        Operator = '+';
        break;
     case R.id.btnSubId:
         aritmetika();
        Operator = '-';
        break;
     case R.id.btnMulId:
         aritmetika();
        Operator = '*';
        break;
     case R.id.btnDivId:
         aritmetika();
        Operator = '/';
        break;
     case R.id.btnSqrtId:
         aritmetika();
         Operator = 'a';
         break;
     case R.id.btnEqualId:
         aritmetika();
        Operator = '=';
        break;
     case R.id.dot:
         aritmetika();
        Operator = '.';
        break;  

     case R.id.btnClearId:   
        rezult = 0;
        inStr = "0";
        Operator = ' ';
        tekstas.setText("0");
        break;
  }

   } 



private void aritmetika() {
  int inNum = Integer.parseInt(inStr);

  if (Operator == ' ') {
     rezult = inNum;
  } else if (Operator == '+') {
     rezult += inNum;
  } else if (Operator == '-') {
     rezult -= inNum;
  } else if (Operator == '*') {
     rezult *= inNum;
  } else if (Operator == '/') {
     rezult /= inNum;
  } else if (Operator == 'a') {          
         rezult = (float)Math.sqrt(rezult);             
  } else if (Operator == '.') {
      String rezult2 = inStr+'.';     
      //need fractional number
  } else if (Operator == '=') {
     // tolesnis veiksmas
  }
  tekstas.setText(String.valueOf(rezult));
   }
}

Я думаю, как сделать дробное число.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2011

Вы можете поместить обработку точек вместе с обработкой чисел, а не как отдельный оператор (трактуйте точку как часть числа).Если вы используете double в качестве типа результата, вы можете использовать parseDouble вместо parseInt для всей строки с числами и точками.

Этот дизайн очень ограничен.Вы должны попытаться создать простой токенизатор и парсер, который создает дерево разбора операций.Это было бы намного более полезным опытом.

0 голосов
/ 21 февраля 2011

Для дробного числа вы можете использовать /, например, 3/4, или очень много десятичной записи, например, 1.23. Вы сталкиваетесь с какими-либо конкретными проблемами!?

ОБНОВЛЕНИЕ ПОСЛЕ ОТРИЦАТЕЛЬНОГО ГОЛОСОВАНИЯ, И БОЛЬШЕ ОПИСАНИЯ ВОПРОСА: -P

Вы можете использовать кнопку с точкой (.), Как и любую другую кнопку. введите . в качестве текста.

Добавьте все элементы в тексте редактирования и, нажав на кнопку =, выньте все из текста редактирования в виде строки, сначала обработайте математические знаки как +,-,x,/ как разделители и преобразуйте свои значения в запись после исправления, сохранить их в массиве и затем вычислить.

...