2016-09-15 38 views
1

下面是代碼:爲什麼'Res'變量保持一些隨機數而不是從編輯文本字段中檢索數字?

public class MainActivity extends AppCompatActivity implements   
View.OnClickListener { 

private TextView TvTtlCrd; 


    int Res = TvTtlCrd.getText().length(); 
    switch (view.getId()) { 
     case R.id.btnCal: 
      try { 
       Float Calculation = (
            (Float.parseFloat(numM1) * Float.parseFloat(numP1)) 
            +(Float.parseFloat(numM2)*Float.parseFloat(numP2))); 
       Float Result=Calculation/Res; 
       TvRes.setText(String.valueOf(Result)); 
      } catch (Exception e) { 
       TvRes.setText("Make sure to Enter all the fields"); 
      } 
      break; 
      } 
     } 
    } 

當我調試,我發現所有的變量檢索數目相同的文本字段,但TvTtlCrd文本字段的值不提取的代碼。是什麼原因? 我只發佈了一部分相關的代碼。 也如何將變量存儲在列表中並計算使用列表函數? 謝謝

+0

'中期業績= TvTtlCrd.getText()長度();' - 你得到的文本長度'()''中TvTtlCrd',而不是實際的文字,你會得到用'toString()'。你在問什麼? –

+0

不,對於函數Float Result = Calculation/Res;如果我將res數據類型轉換爲字符串,它將顯示錯誤消息,因爲運算符'/'無法應用於J.L.float以J.L.String。我想從Res變量中提到的值中劃分計算結果。 –

+0

您的問題顯示「TvTtlCrd文本字段值未被檢索,原因是什麼?」這就是原因。 length()方法返回文本中的字符數,而不是實際的文本本身。您需要將文本作爲String來獲取,並將其轉換爲數字,就像在下面的代碼中使用Float.parseFloat()時一樣。 –

回答

0

它似乎是抓住TvTtlCrd對象而不是文本的長度。

變化:

int Res = TvTtlCrd.getText().length(); 

要:

int Res = Integer.parseInt(TvTtlCrd.getText().toString()); 

或者:和解析,但是你認爲合適得到int值。

String Res = TvTtlCrd.getText().toString(); 
+0

第一個解決方案的工作,非常感謝。 –

+0

確保接受解決方案,以便此線程得到解決。 – slackwars

相關問題