Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何输入小数?_Android_Input_Numbers_Fractions - Fatal编程技术网

Android 如何输入小数?

Android 如何输入小数?,android,input,numbers,fractions,Android,Input,Numbers,Fractions,我是Java Android开发的初学者。我使用的是EclipseSDK3.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.bt

我是Java Android开发的初学者。我使用的是EclipseSDK3.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));
   }
}

我在想如何做一个分数

对于小数,可以使用
/
3/4
或类似
1.23
的十进制表示法。您是否面临任何具体问题

在投反对票后更新,以及更多相关描述:-p

您可以像使用其他按钮一样使用点(.)按钮。将
作为其文本


添加编辑文本中的所有内容,点击
=
按钮,将编辑文本中的所有内容作为字符串,首先将数学符号作为
+,-,x,/
作为分隔符,并将值转换为后固定符号,将它们存储在一个数组中,然后进行计算。

您可以将点处理与数字处理放在一起,而不是作为单独的运算符(将点视为数字的一部分)。如果使用double作为rezult的类型,则可以对带有数字和点的整个字符串执行parseDouble而不是parseInt


这种设计非常有限。您应该尝试创建一个简单的标记器和解析器来创建操作的解析树。这将是一次更有意义的体验。

我不太确定你在问什么,你有什么特别的问题?我创建了一个键盘,上面有按钮“0、1、2、3、4、5、6、7、8、9”和数学运算符“+、-、/、*”和点按钮。“如果我想输入5.2,我必须按5、点、2。”。如何声明一个点按钮,如果我想用点输入5.2或其他数字。这是一个注释,不是答案。