当前位置: 首页 > 知识库问答 >
问题:

在kotlin的EditText中有什么方法可以阻止空十进制值崩溃?

伯英武
2023-03-14

当我们放置空值时,我需要在我的应用中提供帮助。当我尝试计算时,如果没有值,是否有任何方法可以防止崩溃。只是我需要当我按下计算按钮时,它将文本设置为“输入值”在答案中

当我尝试将字符串转换为小数或整数类型时,只会在计算中出错,并阻止其生成

这是我的布局xml

<EditText
    android:id="@+id/distance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="@string/distance"
    android:inputType="number|numberDecimal|numberSigned"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.094"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.034" />

<EditText
    android:id="@+id/initalVelocity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="@string/initialVelocity"
    android:inputType="number|numberDecimal|numberSigned"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.094"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.133" />

<EditText
    android:id="@+id/time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="@string/time"
    android:inputType="number|numberDecimal|numberSigned"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.094"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.232" />

<TextView
    android:id="@+id/answer"
    android:layout_width="219dp"
    android:layout_height="37dp"
    android:text="@string/answer"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.096"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.35" />

<Button
    android:id="@+id/calculate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/calculate"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.462" />

以下是我的主要活动kt文件:

calculate.setOnClickListener {
        val s = distance.text.toString().toDouble()
        val u = initalVelocity.text.toString().toDouble()
        val t = time.text.toString().toDouble()

        val a = (((2* s))-(2*(u*t)))/(t*t)

            answer.setText("answer $a m/(s)^2")

    }

图像

共有2个答案

傅献
2023-03-14

试试这个

calculate.setOnClickListener {

if((distance.text.toString().lenght>0) && 
(initalVelocity.text.toString().lenght>0) && 
 (time.text.toString().lenght>0)) {
        val s = distance.text.toString().toDouble()
        val u = initalVelocity.text.toString().toDouble()
        val t = time.text.toString().toDouble()
        val a = (((2* s))-(2*(u*t)))/(t*t)
        answer.setText("answer $a m/(s)^2")

    }else{
    //String null
    }
}
危文乐
2023-03-14

首先点击按钮,你必须检查编辑文本是否有任何值,如果没有不计算

这是示例

btn.setOnClickListener{
        //read value from `EditText` to a String variable
        val s = distance.text.toString().trim().toDouble()
        val u = initalVelocity.text.toString().trim().toDouble()
        val t = time.text.toString().trim().toDouble()

        //check if the `EditText` have values or not
        if(s > 0 && u  > 0 && t > 0) {
            //calculate
            val a = (((2* s))-(2*(u*t)))/(t*t)
           answer.setText("answer $a m/(s)^2")

        }else{
            Toast.makeText(applicationContext, "Please value! ", Toast.LENGTH_SHORT).show()
        }
    } 

您可以在此处找到更清晰的解决方案表单和类型转换-kitlin

 类似资料:
  • 问题内容: 我刚刚开始玩Java 8和Lambda Expression,我很好奇是否可以通过返回特定值(例如null)从Lambda表达式内部停止Stream生成。Stream.generate()是否可能? 不幸的是,此代码不会终止,因此仅返回就不会退出流。 问题答案: 对于Lamdas,这是不可能的,您无法从表达式内部控制流。甚至API文档都说Stream.generate生成无限流。 但是

  • 材料设计非常强调“纸张”的隐喻。要做到这一点,阴影是必不可少的。由于材料设计是一种理念,而不是API(尽管它内置在L中),因此应该在任何地方(Windows窗体、HTML/CSS等)进行设计。如何在Android API 14到20中做到这一点? 请注意,对于圆形和其他非方形形状,预制PNG实际上并不实用。

  • 是否可以使用一种方法或其他方法,而不是“%.6f”。格式(值)以实现相同的目标?这是我的代码: 我想让它更具动态性和可读性

  • 在Kotlin中,您可以创建: 然后可以使用它解析JSON,例如“{n:10}”。在这种情况下,您将有一个对象,从、或接收,它包含以下值:。 在Kotlin+GSON-How to get a emptyList when null for data类中,您可以看到另一个示例。 当您以后尝试使用时,您将在这里得到一个异常::“Kotlin.TypeCastException:null不能被强制转换

  • 问题内容: 我必须为我的OJT公司编程一个应用程序管理系统。前端将在C#中完成,后端将在SQL中完成。 现在,我从来没有做过这样的项目。在学校里,我们只有关于SQL的基本课程。不知何故,我们的老师完全没有讨论SQL注入,而我直到现在才通过网上阅读与之接触。 所以无论如何,我的问题是:如何防止C#中的SQL注入?我模糊地认为,可以通过适当地屏蔽应用程序的文本字段来做到这一点,以使其仅接受指定格式的输

  • 有什么方法可以防止一个字段在Jackson中反序列化吗?但是我需要序列化我用@JsonIgnoreProperties尝试字段,这阻止了序列化和反序列化。