2015-03-03 40 views
1

我正在開發一個關於pmt的應用程序。在這裏我有一個函數,它將輸入的編輯文本(僅數字)轉換爲十進制(它被要求edittext會以某種方式使用戶給定的輸入看起來像一個貨幣,例如用戶輸入三個數字「987」在EditText上會顯示「987」沒有變化,但是當用戶類型多,一個或多個可以說,「987654」這將是「987654」)android如何將十進制轉換爲int(即將計算),然後再轉換爲十進制(結果)

Edittext 1st example 
987 
Edittext 2nd example 
987,654 
Edittext another example 
987,654,321 
Edittext another example 
9,876 
Edittext another example 
98,765 

但是這個功能將使得從EditText上輸入不計算能力(我仍然是新的android(日食)我有另一個功能,將從同一個edittext並自動計算輸入(沒有按鈕點擊或一些行動),然後顯示在同一個佈局的文本視圖的結果) 我想知道如果我們可以說把它轉換爲int(來計算)然後轉換回到十進制。或者以某種方式存儲要計算的臨時數據,而不更改顯示,edittext上的顯示仍爲十進制格式。

我makedecimal功能:

public void myEditTextAndroidOnClick(View v) 
       { 
           MyEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); 

           DigitsKeyListener dkl = new DigitsKeyListener(true,true); 
           MyEditText.setKeyListener(dkl); 

           MyEditText.addTextChangedListener(new TextWatcher(){ 
         private String current = ""; 

         @Override 
         public void afterTextChanged(Editable s) { 
           String userInput=s.toString(); 

           if(!userInput.toString().equals(current)){ 
               MyEditText.removeTextChangedListener(this); 

               String cleanString = userInput.replaceAll("[,]", ""); 

               if(cleanString.length()>0){ 
                   double parsed = Double.parseDouble(cleanString);             
                   String formated = DecimalFormat.getNumberInstance().format(parsed); 

                   current = formated; 
                   MyEditText.setText(formated); 
                   MyEditText.setSelection(formated.length()); 
               }else{ 
                   MyEditText.setText(cleanString); 
                   MyEditText.setSelection(cleanString.length()); 
               } 

               MyEditText.addTextChangedListener(this); 
        } 
         } 
         @Override 
         public void beforeTextChanged(CharSequence s, int start, 
           int count, int after) { 
         } 
         @Override 
         public void onTextChanged(CharSequence s, int start, 
           int before, int count) { 
         } 
        });               
       } 

計算器

MyEditText.addTextChangedListener(new TextWatcher() { 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 

        String text1 = MyEditText.getText().toString(); 
        if (text1.length() != 0) { 
         int input1 = Integer.valueOf(text1); 

         int input2 = Integer.valueOf(s.toString()); 

         int output = (input1 * input2)/100; 
         MyTextViewThatWillDisplayTheResult.setText(output + ""); 
        } 

       } 

       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void afterTextChanged(Editable s) { 
       } 
      }); 
      } 

文本2來自同一layout.I其他的EditText在想如果這個功能,可以在相同的功能合併或以某種方式轉換到int(我實際上使用long)然後轉換回MyTextViewThatWillDisplayTheResult小數。但我不知道該怎麼做,我被困在這裏。

在此先感謝

回答

0

雖然顯示的EditText放逗號您的數據和計算時,刪除逗號,然後做計算。

使用替換:

x=x.replaceAll(',', ""); 
相關問題