我如何让Android Studio在textView中显示计算的值

我是Android编程的新手,我遇到了编程基本应用程序的问题。该应用程序应该计算课程考试所需的标记,以获得课程中的某个标记(这不是一个家庭作业问题,而只是我正在研究的内容)。具体来说,我无法找到一种方法来在textView小部件中显示计算结果。我已经在下面发布了我的代码。另一方面,我的应用程序在启动时也会立即崩溃,所以如果你发现任何可疑的东西,那真的会有帮助。谢谢!我如何让Android Studio在textView中显示计算的值

更新:感谢hai hack,我的应用程序现在可以正常打开。但是,点击按钮后它仍然崩溃。我有更新我的代码和logcat的显示所做的更改

MainActivity:

import android.support.v7.app.AppCompatActivity; 

import android.os.Bundle;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Button;

import static com.managergmail.time.finite.finitemanager02.R.id.calculateButton;

import static com.managergmail.time.finite.finitemanager02.R.id.textViewExamMarkNeeded;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button buttonCalculate = (Button) findViewById(R.id.buttonCalculate);

buttonCalculate.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

EditText currentGradeInput = (EditText) findViewById(R.id.currentGradeInput);

float currentGradeValue = Float.valueOf(currentGradeInput.getText().toString());

//obtaining value of currentGrade inputted by the user and converting to float

EditText desiredGradeInput = (EditText) findViewById(R.id.desiredGradeInput);

float desiredGradeValue = Float.valueOf(desiredGradeInput.getText().toString());

//obtaining value of currentGrade inputted by the user and converting to float

EditText examWeightInput = (EditText) findViewById(R.id.examWeightInput);

float examWeightValue = Float.valueOf(examWeightInput.getText().toString());

//obtaining value of currentGrade inputted by the user and converting to float

float currentGradeWeight = 100-examWeightValue;

//calculating current grade weight

final float examMarkNeededValue;

examMarkNeededValue= ((100*desiredGradeValue)-currentGradeValue*currentGradeWeight)/examWeightValue;

textViewExamMarkNeeded.setText((Float.toString(examMarkNeededValue)));

}

});

}

}

XML代码:

<android.support.constraint.ConstraintLayout 

android:layout_width="match_parent"

android:layout_height="match_parent"

<TextView

android:id="@+id/textView"

android:layout_width="180dp"

android:layout_height="45dp"

android:text="@string/input_the_weighting_of_your_exam"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintHorizontal_bias="0.078"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.356" />

<TextView

android:id="@+id/textView2"

android:layout_width="180dp"

android:layout_height="45dp"

android:text="@string/input_your_desired_grade"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintHorizontal_bias="0.078"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.19" />

<TextView

android:id="@+id/textViewExamMarkNeeded"

android:layout_width="265dp"

android:layout_height="64dp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.662"

app:layout_constraintHorizontal_bias="0.378" />

<TextView

android:layout_width="180dp"

android:layout_height="45dp"

android:text="@string/input_your_current_grade"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintHorizontal_bias="0.073"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.034"

android:id="@+id/textView3" />

<EditText

android:id="@+id/currentGradeInput"

android:layout_width="0dp"

android:layout_height="0dp"

android:ems="10"

android:inputType="numberDecimal"

tools:layout_constraintTop_creator="1"

tools:layout_constraintRight_creator="1"

tools:layout_constraintBottom_creator="1"

android:layout_marginStart="17dp"

app:layout_constraintBottom_toBottomOf="@+id/textView3"

android:layout_marginEnd="33dp"

app:layout_constraintRight_toRightOf="parent"

tools:layout_constraintLeft_creator="1"

app:layout_constraintTop_toTopOf="@+id/textView3"

app:layout_constraintLeft_toRightOf="@+id/textView3" />

<EditText

android:id="@+id/desiredGradeInput"

android:layout_width="133dp"

android:layout_height="31dp"

android:ems="10"

android:inputType="numberDecimal"

tools:layout_constraintTop_creator="1"

tools:layout_constraintRight_creator="1"

tools:layout_constraintBottom_creator="1"

app:layout_constraintBottom_toTopOf="@+id/examWeightInput"

android:layout_marginEnd="33dp"

app:layout_constraintRight_toRightOf="parent"

android:layout_marginTop="44dp"

app:layout_constraintTop_toBottomOf="@+id/currentGradeInput"

android:layout_marginBottom="42dp" />

<EditText

android:id="@+id/examWeightInput"

android:layout_width="0dp"

android:layout_height="33dp"

android:ems="10"

android:inputType="numberDecimal"

tools:layout_constraintTop_creator="1"

tools:layout_constraintRight_creator="1"

tools:layout_constraintBottom_creator="1"

app:layout_constraintBottom_toTopOf="@+id/calculateButton"

android:layout_marginStart="2dp"

android:layout_marginEnd="2dp"

app:layout_constraintRight_toRightOf="@+id/desiredGradeInput"

android:layout_marginTop="12dp"

tools:layout_constraintLeft_creator="1"

android:layout_marginBottom="19dp"

app:layout_constraintLeft_toLeftOf="@+id/desiredGradeInput"

app:layout_constraintTop_toTopOf="@+id/textView" />

<Button

android:id="@+id/buttonCalculate"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginBottom="17dp"

android:layout_marginEnd="7dp"

android:onClick="onButtonClick"

android:text="@string/calculate"

app:layout_constraintBottom_toTopOf="@+id/textViewExamMarkNeeded"

app:layout_constraintRight_toRightOf="@+id/textViewExamMarkNeeded"

tools:layout_constraintBottom_creator="1"

tools:layout_constraintRight_creator="1" />

logcat的

12-17 21:14:05.840 18312-18312/? E/AndroidRuntime: FATAL EXCEPTION: main 

Process: com.managergmail.time.finite.finitemanager02, PID: 18312

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.managergmail.time.finite.finitemanager02/com.managergmail.time.finite.finitemanager02.MainActivity}: java.lang.NumberFormatException: Invalid float: ""

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2581)

at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2647)

at android.app.ActivityThread.-wrap11(ActivityThread.java)

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1502)

at android.os.Handler.dispatchMessage(Handler.java:111)

at android.os.Looper.loop(Looper.java:207)

at android.app.ActivityThread.main(ActivityThread.java:5763)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)

Caused by: java.lang.NumberFormatException: Invalid float: ""

at java.lang.StringToReal.invalidReal(StringToReal.java:63)

at java.lang.StringToReal.parseFloat(StringToReal.java:308)

at java.lang.Float.parseFloat(Float.java:306)

at java.lang.Float.valueOf(Float.java:343)

at com.managergmail.time.finite.finitemanager02.MainActivity.onCreate(MainActivity.java:20)

at android.app.Activity.performCreate(Activity.java:6280)

at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1116)

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2534)

at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2647) 

at android.app.ActivityThread.-wrap11(ActivityThread.java) 

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1502) 

at android.os.Handler.dispatchMessage(Handler.java:111) 

at android.os.Looper.loop(Looper.java:207) 

at android.app.ActivityThread.main(ActivityThread.java:5763) 

at java.lang.reflect.Method.invoke(Native Method) 

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749) 

回答:

尝试添加以下内容到editext

final EditText currentGradeInput = (EditText)findViewById(R.id.currentGradeInput); 

currentGradeInput.addTextChangedListener(new TextWatcher() {

@Override

public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override

public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

currentGradeValue = Float.valueOf(currentGradeInput.getText().toString());

}

@Override

public void afterTextChanged(Editable editable) {

}

});

上面的代码将很好地工作而不引发任何数字格式例外。

回答:

看来, examMarkNeededValue计算为null。所以我建议你使用:

String.valueOf(examMarkNeededValue)

,而不是

Float.toString(examMarkNeededValue)

因为在Float.toString情况下,如果实例null,然后NullPointerException被抛出,但在这种情况下String.valueOf会返回一个字符串"null"。 计算结果为空,因为您没有在按钮上使用事件侦听器。

回答:

从一开始,你的EditTexts就没有价值,所以在onCreate()方法中使用Float.valueOf(currentGradeInput.getText().toString())意味着你将一个空字符串“”转换为浮点数。这不可能让你的应用崩溃。

在这种情况下,您应该在应用中有一个提交按钮来获取输入值并将其转换。里面的onCreate(),添加:

Button btnSubmit = findViewById(R.id.btn_button); 

btnSubmit.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

float desiredGradeValue = Float.valueOf(desiredGradeInput.getText().toString());

float examWeightValue = Float.valueOf(examWeightInput.getText().toString());

textViewExamMarkNeeded.setText((Float.toString(examMarkNeededValue)));

}

});

以上是 我如何让Android Studio在textView中显示计算的值 的全部内容, 来源链接: utcz.com/qa/260355.html

回到顶部