因此,我在Android Studio中创建的手机上测试我的应用程序,每当我使用setOnClickListener()中的calc()函数时,当我按下按钮时,手机退出应用程序,并收到错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.fallingobject, PID: 20895
java.lang.NumberFormatException: empty String
at jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:543)
at com.example.fallingobject.MainActivity.onCreate$lambda$0(MainActivity.kt:32)
at com.example.fallingobject.MainActivity.$r8$lambda$_3dgtv8ZNTl9g4zWX7J50i2eoew(Unknown Source:0)
at com.example.fallingobject.MainActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:4)
at android.view.View.performClick(View.java:7498)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1202)
at android.view.View.performClickInternal(View.java:7471)
at android.view.View.access$3700(View.java:843)
at android.view.View$PerformClick.run(View.java:29071)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:233)
at android.os.Looper.loop(Looper.java:344)
at android.app.ActivityThread.main(ActivityThread.java:8205)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:589)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1071)
这是我代码
MainActivity.kt:
package com.example.fallingobject
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import kotlin.math.sqrt
fun calc(vi: Double, height: Double): String {
val a = 9.8
val vf = sqrt((vi * vi) + 2 * a * height)
val va = (vf + vi) / 2
val t = height / va
return t.toString()
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val calcBtn = findViewById<Button>(R.id.calcBtn)
val vi = findViewById<EditText>(R.id.sIn).text.toString()
val height = findViewById<EditText>(R.id.hIn).text.toString()
calcBtn.setOnClickListener {
val calculation = calc(vi.toDouble(), height.toDouble())
//Toast.makeText(this@MainActivity, calculation, Toast.LENGTH_SHORT).show()
}
}
}
活动_主要. xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
android:background="#131313"
tools:context=".MainActivity" >
<EditText
android:id="@+id/sIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginTop="100dp"
android:layout_marginEnd="100dp"
android:layout_marginBottom="55dp"
android:backgroundTint="#BE40EC"
android:ems="10"
android:inputType="number"
android:textColor="#673AB7"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/hIn"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/hIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginTop="200dp"
android:layout_marginEnd="100dp"
android:layout_marginBottom="120dp"
android:backgroundTint="#FFBE40EC"
android:ems="10"
android:inputType="number"
android:textColor="#673AB7"
app:layout_constraintBottom_toTopOf="@+id/calcBtn"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/calcBtn"
android:layout_width="153dp"
android:layout_height="56dp"
android:layout_marginStart="100dp"
android:layout_marginTop="364dp"
android:layout_marginEnd="100dp"
android:layout_marginBottom="80dp"
android:text="Button"
app:layout_constraintBottom_toTopOf="@+id/editTextNumber3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editTextNumber3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginTop="500dp"
android:layout_marginEnd="100dp"
android:layout_marginBottom="186dp"
android:backgroundTint="#FFBE40EC"
android:ems="10"
android:inputType="number"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView2"
android:layout_width="73dp"
android:layout_height="33dp"
android:layout_marginStart="100dp"
android:layout_marginTop="50dp"
android:layout_marginEnd="100dp"
android:layout_marginBottom="31dp"
android:text="Speed"
android:textColor="#BE40EC"
android:textSize="25sp"
app:layout_constraintBottom_toTopOf="@+id/sIn"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="100dp"
android:layout_marginTop="150dp"
android:layout_marginEnd="100dp"
android:layout_marginBottom="16dp"
android:text="Height"
android:textColor="#BE40EC"
android:textSize="25sp"
app:layout_constraintBottom_toTopOf="@+id/hIn"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
我试着注解var计算和所有与calc()函数相关的东西,它确实工作了,但我仍然需要使用这个函数。
如果这可以帮助,我正在使用牛轧糖7. 0
2条答案
按热度按时间p8ekf7hl1#
数字格式错误,请在异常描述中查找原因:
java.lang.NumberFormatException:空字符串
字符串是空的,所以你必须搜索它发生的原因。
在开始时你从文本字段中获取一个值并将其保存在vi变量中。在开始时文本字段的值是空字符串。在click处理程序中你试图将这个保存的空字符串转换为double,但得到了错误。
你必须在click处理程序中获取文本字段的值,类似于:
zkure5ic2#
这是因为您的 vi 和/或 height 字段为空。请尝试以下操作: