如何在Kotlin中的when语句中访问变量

问题描述 投票:0回答:1

我正在研究一种自我评估功能,它将使人们知道他们是否有被电晕感染的危险,从而为他们提供是否接受测试的建议。我创建了多个单选按钮,让患者可以检查不同的症状,为每个单击的单选按钮分配一个值,该单选按钮应该与其他值一起添加,以便找到一个分数,我们可以根据该分数知道患者是否应该继续进行covid-19测试。我需要修复代码的帮助,以便能够读取和添加每个单选按钮的所有值。这是我的代码。

if (view is RadioButton) {
        // Is the button now checked?
        val checked = view.isChecked

        // Check which radio button was clicked
        when (view.getId()) {
            R.id.yes_1 ->
                if (checked) {
                    val yes1= 1
                    Toast.makeText(this, "Yes 1", Toast.LENGTH_LONG).show()
                }
            R.id.no_1 ->
                if (checked){
                    val no1=0
                    Toast.makeText(this, " No 1", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_2 ->
                if (checked) {
                    val yes2= 1
                    Toast.makeText(this, "Yes 2", Toast.LENGTH_LONG).show()
                }
            R.id.no_2 ->
                if (checked) {
                    val no2= 0
                    Toast.makeText(this, "No 2", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_3 ->
                if (checked) {
                    val yes3=1
                    Toast.makeText(this, "Yes 3", Toast.LENGTH_LONG).show()
                }
            R.id.no_3 ->
                if (checked) {
                    val no3=0
                    Toast.makeText(this, "No 3", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_4 ->
                if (checked) {
                    val yes4=1
                    Toast.makeText(this, "Yes 4", Toast.LENGTH_LONG).show()
                }
            R.id.no_4 ->
                if (checked) {
                    val no4=0
                    Toast.makeText(this, "No 4", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_5 ->
                if (checked) {
                    val yes5=5
                    Toast.makeText(this, "Yes 5", Toast.LENGTH_LONG).show()
                }
            R.id.no_5 ->
                if (checked) {
                    val no5=0
                    Toast.makeText(this, "No 5", Toast.LENGTH_SHORT).show()
                }
            R.id.yes_6 ->
                if (checked) {
                    val yes6=5
                    Toast.makeText(this, "Yes 6", Toast.LENGTH_LONG).show()
                }
            R.id.no_6 ->
                if (checked) {
                    val no6=0
                    Toast.makeText(this, "No 6", Toast.LENGTH_SHORT).show()
                }
        }
        val assesment_point= yes1 + n01 + yes2 + no2 +yes3 + no3 + yes4 + no4 + yes5 + no5 + yes6 + no6
    }
}

Here is the screenshot of how the app works

android-studio kotlin android-activity switch-statement
1个回答
0
投票

简短的答案是scope定义是否可以访问变量。在您的情况下,这些值仅存在于when case块内,而不存在于外部。

快速解决方法是在外部预先定义它们,并仅更改when块内部的值。

(offtopic:您对radio button sample有点误解了。在您的情况下,您不想对每个单选按钮单击做出反应,而是只要按下“提交”按钮即可。同样,您也不需要“是6”一个“ answer6”,如果不是,则为“ 0”,如果是,则为“ 1”。这已经可以大大降低代码复杂度...)]

© www.soinside.com 2019 - 2024. All rights reserved.