2016-11-30 41 views
0

在Android Studio 2.2.2(MainActivity.java)中編寫程序。基本上有多個輸入,一個按鈕,多個輸出。然而,許多產出被交叉引用到許多其他產出中。因爲我們的教授在非編程課上向我們投擲了這些東西,所以我對這一切都很陌生。任何人都可以看到我的一些錯誤?我希望我正在做的過程大部分都是正確的,但操作都與字符串/浮點數/雙不兼容問題。感謝您的任何見解!轉換爲浮點以進行數學運算

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
private Button btnCalc; 
private TextView tvaResult; 
private TextView tvcResult; 
private TextView tvetResult; 
private TextView tvphiResult; 
private TextView tvMnResult; 
private TextView tvphiMnResult; 
private TextView tvbeta1Result; 
private EditText etB,etD,etH,etAs,etFc,etFy; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    init(); 
} 

private void init() { 
    btnCalc = (Button)findViewById(R.id.btnCalc); 
    etB = (EditText)findViewById(R.id.etB); 
    etD = (EditText)findViewById(R.id.etD); 
    etH = (EditText)findViewById(R.id.etH); 
    etAs = (EditText)findViewById(R.id.etAs); 
    etFc = (EditText)findViewById(R.id.etFc); 
    etFy = (EditText)findViewById(R.id.etFy); 
    tvaResult = (TextView)findViewById(R.id.tvaResult); 
    tvcResult = (TextView)findViewById(R.id.tvcResult); 
    tvetResult = (TextView)findViewById(R.id.tvetResult); 
    tvphiResult = (TextView)findViewById(R.id.tvphiResult); 
    tvMnResult = (TextView)findViewById(R.id.tvMnResult); 
    tvphiMnResult = (TextView)findViewById(R.id.tvphiMnResult); 
    tvbeta1Result = (TextView)findViewById(R.id.tvbeta1Result); 

    btnCalc.setOnClickListener(this); 
} 

@Override 
public void onClick(View view) { 
     Float B = Float.parseFloat(etB.getText().toString()); 
     Float D = Float.parseFloat(etD.getText().toString()); 
     Float H = Float.parseFloat(etH.getText().toString()); 
     Float As = Float.parseFloat(etAs.getText().toString()); 
     Float Fc = Float.parseFloat(etFc.getText().toString()); 
     Float Fy = Float.parseFloat(etFy.getText().toString()); 
     Float aResult = Float.parseFloat(tvaResult.getText().toString()); 
     Float cResult = Float.parseFloat(tvcResult.getText().toString()); 
     Float etResult = Float.parseFloat(tvetResult.getText().toString()); 
     Float beta1Result = Float.parseFloat(tvbeta1Result.getText().toString()); 
     Float phiResult = Float.parseFloat(tvphiResult.getText().toString()); 
     switch(view.getId()) { 
      case R.id.btnCalc: 
       tvaResult = (Fy * As)/(0.85 * Fc * B); 
       tvcResult = aResult/beta1Result; 
       tvetResult = ((D - cResult)/(cResult)) * 0.003; 
       if (Fc <= 4000) { 
        beta1Result = 0.85; 
       } else if (4000 < Fc <= 8000) { 
        beta1Result= ((0.85)-(0.05 * ((Fc - 4000)/(1000)))); 
       } else { 
        beta1Result= 0.65; 
       } 
       if (etResult >= 0.005) { 
        tvphiResult= 0.9; 
       } else if (0.002 <= etResult < 0.005) { 
        tvphiResult= 0.65 + ((etResult - 0.002) * ((0.25)/(0.005 - 0.002))); 
       } else { 
        tvphiResult= 0.00 
       } 
       tvMnResult= (Fy * As) * (etD - (aResult/2)); 
       tvphiMnResult= phiResult * tvMnResult 
     }} 
}} 
+0

_誰能看到我的一些錯誤?_不,看不到任何東西。請提供一些代碼。見[問]。並歡迎SO – AxelH

+0

AxelH:添加了代碼,更容易編寫問題然後添加代碼。 我知道這可能是一堆錯誤,因爲這實際上是我第一次需要編碼。我不希望任何人爲我做這些,當然,任何幫助表示讚賞。 –

+0

既然你說了很多錯誤,那麼它們就成爲了哪一行代碼的指示,你能提供嗎? – MVCNoob

回答

0

爲了簡短起見,您需要保留每個變量的類型。

這裏有個例子:

tvaResult = (Fy * As)/(0.85 * Fc * B); 

你有

TextView = (Float * Float)/(Double * Float * Float) 
TextView = Double // Not possible 

你正試圖把一個浮點數值成TextView一個實例,這不能當然的完成。但你真的要更新TextView的的文字,所以使用的方法setText(String)的TextView的,如:

tvaResult.setText((Fy * As)/(0.85 * Fc * B) + ""); // Need to be convert into String 

要更改文本打印

這basicly總是犯同樣的錯誤做了,你需要更改TextView的文本,而不是嘗試更改實例本身。

+0

謝謝!這在一條線上有所幫助。我會嘗試遵循其他人的類似格式和邏輯! –

+0

只是一個注意事項,注意浮點計算,你可能會感到驚訝...... – AxelH