【问题标题】:How to input a decimal number in a textEdit如何在文本中输入十进制数
【发布时间】:2022-01-24 02:54:49
【问题描述】:

我有一个输入类型为 numberDecimal 的 TextEdit,我用输入的数字执行了一些代码

当我输入一个整数时,它可以正常工作,但是当我输入一个带小数点的数字时,应用程序会完全重新启动

那么我如何使它与十进制数一起工作?

如果您最终帮助我,请提前感谢您

KT 文件

    class f_to_c : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.f_to_c)

        val actionBar = supportActionBar

        val calculate = findViewById<Button>(R.id.calculate)
        val tempEntered = findViewById<TextView>(R.id.tempEntered)
        val result = findViewById<TextView>(R.id.result)
        val temp = findViewById<EditText>(R.id.temp)


        if (actionBar != null){
            actionBar.title = "Fahrenheit To Celsius"
            actionBar.setDisplayHomeAsUpEnabled(true)
        }

        calculate.setOnClickListener {
            var x = Integer.parseInt(temp.getText().toString()).toString().toInt()
            tempEntered.text = x.toDouble().toString()
            result.text = ((x-32).toFloat()*5/9).toString()
        }

    }
}

【问题讨论】:

    标签: android android-studio kotlin


    【解决方案1】:

    如果你想处理十进制数字,你不应该使用Integer.parseInt。这将在“1.23”之类的内容上引发错误。以下应该可以工作(或者你可以使用Double.parseDouble

    val x = temp.getText().toString().toDoubleOrNull() ?: 0.0
    tempEntered.text = x.toString()
    result.text = ((x-32.0)*5.0/9.0).toString()
    

    如果用户输入“1..3”等无效数字,您可能希望以不同的方式处理 null 情况,但在这种情况下默认为 0,而不是抛出。

    此外,如果要在国际范围内使用,您应该考虑到某些语言环境使用逗号作为小数分隔符(“1,23”) - 这将在此处中断。您可以为此使用locale-aware number parser,或者在转换之前将逗号替换为句点。

    val xs = temp.getText().toString().replace(",",".")
    val x = xs.toDoubleOrNull() ?: 0.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      相关资源
      最近更新 更多