我需要做一个计算太阳能电池温度的应用程序,下面是我的代码
我无法想象如何纠正错误。 the formula of calculating the cell temperature
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "Mymessage";
//variable (ambient temperature ,normal operating cell temperature ,insolation level .
EditText input1;
EditText input2;
EditText input3;
TextView result;
Button Calculate;
float num1,num2,num3,sum;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate");
//locate the input
input1 = (EditText) findViewById(R.id.input1Ambient);
input2 = (EditText) findViewById(R.id.input2NOCT);
input3 = (EditText) findViewById(R.id.input3insolation);
result = (TextView) findViewById(R.id.result);
Calculate = (Button) findViewById(R.id.bt_calculation);
}
@Override
protected void onStart (){
super.onStart();
//Performing Calculation
Calculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1=Float.parseFloat(input1.getText().toString());
num2=Float.parseFloat(input2.getText().toString());
num3=Float.parseFloat(input3.getText().toString());
sum=input1+((input2 - 20/ 80))*input3 ;
Calculate.setText(Float.toString(sum));
}
});
Log.i(TAG,"onStart");
}
下面的行是我的XML文件,基本上只有3个EditText用于输入,1个TextView用于答案,1个按钮用于计算。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.asus.fyp.MainActivity">
<Button
android:id="@+id/bt_calculation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="177dp"
android:text="@string/calculation"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<EditText
android:id="@+id/input1Ambient"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="16dp"
android:ems="10"
android:hint="@string/ambient_temperature_c"
android:inputType="numberSigned"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/input2NOCT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="84dp"
android:ems="10"
android:hint="@string/NOCT"
android:inputType="numberSigned"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/input1Ambient" />
<EditText
android:id="@+id/input3insolation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="11dp"
android:ems="10"
android:hint="@string/insolation"
android:inputType="numberDecimal"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/input2NOCT" />
<TextView
android:id="@+id/result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:text="Result"
app:layout_constraintBottom_toTopOf="@+id/bt_calculation"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/input3insolation" />
答案 0 :(得分:0)
你已经解析了input1,input2 =&gt;将文本编辑为Floats ...然后在公式行中
<select>
您使用了input1,input2(edittexts)而不是浮点值(num1,num2)。 实际上,通过这样做,您可以在float变量中保存编辑文本的值。 将其更改为
<datalist>
还纠正了括号...... 它的工作正常。 :)
答案 1 :(得分:0)
这是因为您使用以下内容:
sum=input1+((input2 - 20/ 80))*input3 ;
其中input1,input2和input3是EditText:
EditText input1;
EditText input2;
EditText input3;
正确的是使用以下内容:
num1 = Float.parseFloat(input1.getText().toString());
num2 = Float.parseFloat(input2.getText().toString());
num3 = Float.parseFloat(input3.getText().toString());
sum= num1 + ((num2 - 20/ 80)) * num3;
如果您在代码中使用标准命名约定,那么您的逻辑错误就不应该发生。例如,您应该始终使用一个变量名称,它直接告诉您正在使用的View。
首先,这是不正确的,并没有提供有关变量的任何信息:
EditText input1;
相反,请使用更具描述性的名称:
EditText edtInput;
或者这个:
EditText edtAmbient;
第二,您不应该使用以大写字母开头的变量名称,如下所示:
Button Calculate;
相反,请使用:
Button btnCalculate;
您可以按照以下Android指南进行操作:
https://github.com/joielechong/android-guidelines/blob/master/project_and_code_guidelines.md
或
https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md