糟糕的操作数“ - ”表示android.widget.EditText,“int”

时间:2018-03-08 06:22:19

标签: android

我需要做一个计算太阳能电池温度的应用程序,下面是我的代码

我无法想象如何纠正错误。 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" />

2 个答案:

答案 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