2016-11-30 32 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